h5响应式网站建设方案,小程序api函数,深圳营销网站建设联系方式,企业集团网站建设与运营一、UDP特点#xff1a;
无连接不可靠#xff1a;通信双方不事先建立连接#xff0c;直接发送数据。数据封装#xff1a;将数据封装在64KB的数据包中#xff0c;包含接收端的IP和端口。UDP通信模型#xff1a;
模型比喻#xff1a;以抛韭菜为例#xff0c;发送端像抛韭…一、UDP特点
无连接不可靠通信双方不事先建立连接直接发送数据。数据封装将数据封装在64KB的数据包中包含接收端的IP和端口。UDP通信模型
模型比喻以抛韭菜为例发送端像抛韭菜的人接收端像接韭菜的人数据如韭菜数据包如韭菜盘子。模型作用帮助理解UDP通信过程后续代码编写将严格按照此模型进行。二、 UDP客户端代码实现
创建发送端对象使用DatagramSocket类创建系统会默认分配端口。创建数据包对象使用DatagramPacket类封装要发送的数据需将数据转成字节数组指定发送长度、目的地IP和端口。发送数据包调用DatagramSocket对象的send方法。UDP服务端代码实现
创建接收端对象使用DatagramSocket类需注册端口与客户端指定的端口匹配。创建数据包对象使用DatagramPacket类准备字节数组接收数据大小最好设置为64KB。接收数据调用DatagramSocket对象的receive方法将数据封装到数据包对象的字节数组中。处理数据获取收到的数据长度可通过数据包对象获取对方的IP和端口。
代码测试与注意事项
启动顺序先启动服务端再启动客户端。资源关闭客户端发完数据后应关闭通信管道服务端不应关闭。
UDP多发多收实现
客户端改造使用while死循环让用户不断输入数据封装成数据包发送输入exit退出。服务端改造使用while死循环不断用数据包接收数据。
服务端多客户端接收原理
接收原理服务端只负责接收流向本机和指定端口的数据包不管数据来自哪个客户端所以可以同时接收多个客户端的消息。多开客户端在IDE中配置允许多开实例可同时启动多个客户端。三、TCP通信基础
特点回顾 TCP通信是面向连接的可靠通信采用三次握手建立全双工可靠连接能实现端到端通信服务端确认接收后数据才被认为发送成功。实现方式 在Java中使用Socket类实现TCP通信基于IO流进行数据传输。通信模型 通信分客户端和服务端需建立Socket端到端的通信管道通过字节输入流和输出流在管道中收发数据。客户端开发
创建管道 创建Socket对象请求与服务端连接需填写服务器IP和端口如使用本地IP可填127.0.0.1端口可设为9999。发送消息 从Socket管道获取字节输出流可将其包装成打印流、缓冲字节输入流或特殊数据流DataOutputStream发送数据注意流的对应匹配。资源释放 实际开发中一般用户点退出时才关闭管道一发一收场景可关闭。
服务端开发
创建对象 使用ServerSocket类创建对象并注册端口等待客户端连接调用accept方法返回服务端的Socket对象。接收数据 从Socket管道获取字节输入流包装成特殊数据输入流DataInputStream接收客户端数据先接收整数再接收消息。获取信息 可通过Socket管道获取客户端的IP和端口信息。四、 测试与运行
启动顺序 先启动服务端服务端在accept方法处阻塞等待客户端连接客户端启动后双方建立通信管道。速度差异 服务端和客户端执行速度快慢不影响数据接收数据会缓存到管道中确保对方收到。多发多收实现
客户端改造 使用死循环让用户反复输入消息通过Scanner获取用户输入发exit时关闭管道并退出循环。服务端改造 将接收消息的逻辑放入死循环只接收文本消息服务端不能关闭管道。
多客户端支持
单线程问题 当前服务端单线程只能处理一个客户端消息加死循环也无法解决。多线程引入 主线程负责接收客户端连接每接到一个管道交给独立子线程处理消息定义线程类如ServerReader重写run方法读取管道消息。上下线追踪 服务端可通过接收管道知道客户端上线客户端异常退出或关闭程序时服务端捕获异常追踪下线逻辑可获取客户端IP。五、BS架构原理
架构特点 CS架构需开发客户端和服务端BS架构客户端为浏览器无需开发服务端需开发响应网页。请求与响应 浏览器使用HTTP协议通过IP和端口请求服务端服务端响应网页数据需遵循HTTP协议规定的格式包括协议版本、头部字段、空行等。代码开发 复制之前的服务端代码进行修改端口设为8080方便浏览器识别使用打印流响应网页数据响应完关闭管道。线程池优化
优化原因 每次请求开一个线程处理网站请求不合适线程工作时间短创建和销毁大量线程开销大线程池适合处理网站请求。实现方法 将Socket管道包装成任务对象实现Runnable接口交给线程池处理创建线程池时设置核心线程数、最大线程数、任务队列等参数。