UDP中connect操作与TCP中connect操作有着本质区别.TCP中调用connect会引起三次握手,client与server建立连结.UDP中调用connect内核仅仅把对端ip&port记录下来
使用connect建立的udp连接相比于普通udp连接有两个优势:
一: 提高发送效率
1.在普通udp连接上发送两个报文,在内核操作如下:
a) 建立连接;b)发送报文;c)断开连接;d)建立连接;e)发送第二个报文;f)断开连接
udp发送两个报文,内核操作如下:
a)建立连接;b)发送第一个报文;c)发送第二个报文;d)断开连接
二:在高并发服务中可以增加系统稳定性
假设A 通过非connect的UDP与server B,C通信.B,C提供相同服务.为了负载均衡,我们让A与B,C交替通信. A与 B通信IPa:PORTa <----> IPb:PORTb A与 C通信IPa:PORTa' <---->IPc:PORTc
假设PORTa与 PORTa'相同了(在大并发情况下会发生这种情况),那么就有可能出现A等待B的报文,却收到了C的报文.导致收报错误.解决方法内就是采用connect的UDP通信方式.在A中创建两个udp,然后分别connect到B,C.