




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
android开发之socket编程UDP和TCP通信实现原理图应用程序通过套接字通信,其协议如下:UDP : 把数据打包后直接发送给相应的IP ,数据大小有限制,连接不可靠。TCP :服务器与客户端协议必须匹配,即都是用 TCP 协议,先建立连接,再发送数据,其连接可靠。通信方式如下图所示:代码示例UDP 通信:UDP 使用 DatagramSocket 对象实现数据交互。客户端客户端示例代码如下:import .DatagramPacket;import .DatagramSocket;import .InetAddress;public class Client public static void main(String args) try / 创建一个 DatagramSocket 对象,不要有端口号,否则设置的端口被本类独占。 DatagramSocket socket = new DatagramSocket(); / 创建一个 InetAddress InetAddress serverAddress = InetAddress.getByName(); / 创建传输字符串 String str = hello; / 转换成字节数组 byte data = str.getBytes(); / 创建以供 DatagramPacket 对象, 指定其发送地址和端口号 DatagramPacket packet = new DatagramPacket(data, data.length, serverAddress, 4567); / 调用 socket 对象的 send()方法发送数据 socket.send(packet); catch (Exception e) e.printStackTrace(); 服务器端服务器示例代码如下:import java.io.IOException;import .DatagramPacket;import .DatagramSocket;import .SocketException;public class Server public static void main(String args) / 创建一个 DatagramSocket 对象,指定端口为4567 try DatagramSocket socket = new DatagramSocket(4567); byte data = new byte1024; / 创建一个空 DatagramPacket 对象 DatagramPacket packet = new DatagramPacket(data, data.length); / 使用 receiver 方法接手客户端所发送到数据, 如果客户端没有发送数据, 进程阻塞 socket.receive(packet); String result = new String(packet.getData(), packet.getOffset(), packet.getLength(); System.out.println(result - + result); catch (SocketException e) e.printStackTrace(); catch (IOException e) e.printStackTrace(); 运行结果:PS:Windows下查看端口:netstat -n -a | find 4567TCP 通信:TCP 通信需先建立连接,然后进行数据通信。客户端import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import .Socket;import .UnknownHostException;public class Client public static void main(String args) try / 创建一个 Socket 对象, 指定服务器端的 IP 地址和端口号 Socket socket = new Socket(, 4567); / 使用 InputStream 读取硬盘上的文件 InputStream inputStream = new FileInputStream(D:aa.txt); / 从 Socket 当中得到 OutputStream OutputStream outputStream = socket.getOutputStream(); byte buffer = new byte4 * 1024; int temp = 0; / 将 InputStream 当中的数据取出, 并写入到 OutputStream 当中 while (temp = inputStream.read(buffer) != -1) outputStream.write(buffer, 0, temp); outputStream.flush(); / 必须关闭,否则有 reset 异常 outputStream.close(); socket.close(); catch (UnknownHostException e) e.printStackTrace(); catch (IOException e) e.printStackTrace(); 服务器端import java.io.IOException;import java.io.InputStream;import .ServerSocket;import .Socket;public class Server public static void main(String args) / 声明一个 ServerSocket 对象 ServerSocket serverSocket = null; try / 创建一个 ServerSocket 对象, 并让这个Socket 在4567 端口监听 serverSocket = new ServerSocket(4567); / 调用 ServerSocket 的accept() 方法, 接受客户端所发送到请求,如果客户端没有发送数据,那么该线程就停滞不继续 Socket socket = serverSocket.accept(); / 从 Socket 当中得到 InputStream 对象 InputStream inputStream = socket.getInputStream(); byte buffer = new byte1024 * 4; int temp = 0; / 从 InputStream 中读取客户端数据 while (temp = inputStream.read(buffer) != -1) System
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 土壤养分失衡矫正实施方案
- 燃气工程材料采购方案
- 雨水渗透池施工方案
- 校园围墙防攀爬安全教育
- XX市公共供水管网漏损治理工程项目工程方案
- 水库水资源调度优化方案
- 校园周边文明安全教育
- 铜采选工程施工方案
- 校园安全教育十二条
- 生物质能发电项目建设方案
- 2024广东省产业园区发展白皮书-部分1
- 2025年国家网络安全宣传周网络安全知识考核试题
- 2025四川蜀道建筑科技有限公司招聘16人备考练习题库及答案解析
- 生态视角下陕南乡村人居环境适老化设计初步研究
- 2025-2030中国教育领域的虚拟现实技术行业发展战略与应用趋势预测报告
- 2025广西现代物流集团第三次招聘109人笔试备考试题及答案解析
- 2025年中职历史考试题及答案
- 图书出口管理办法
- 高三后期班级管理课件
- 廉政教育进课堂大学
- GB/T 45777-2025水泥中石膏掺量评估方法
评论
0/150
提交评论