CLIENT端
UDP的连接性
- 我们知道udp是无连接的,这个无连接指的是不和服务端建立像tcp协议那样的长连接.
- new DatagramSocket().connect(address) 在客户端会占用一个句柄,所以该udp socket不用后需要调用datagramSocket.close()来关闭连接,释放资源 否则就会产生连接泄露 上图即是udp客户端的连接状态,我们看到它跟tcp差不多
UDP缓冲区设置
- 参考我的博文
SERVER端
吞吐量
- 由于udp的无连接性,client发送大量的数据,服务端如果不能及时处理这些数据包,就会导致udp丢包,常规的做法 就是多线程异步处理udp消息,即read方法读取后,直接异步写入队列,千万不能在read方法里面同步做业务