UDP协议中是否可以使用connect
2013-04-16 20:40
295 查看
1:UDP中可以使用connect系统调用2:UDP中connect操作与TCP中connect操作有着本质区别.TCP中调用connect会引起三次握手,client与server建立连结.UDP中调用connect内核仅仅把对端ip&port记录下来.3:UDP中可以多次调用connect,TCP只能调用一次connect.UDP多次调用connect有两种用途:1,指定一个新的ip&port连结.2,断开和之前的ip&port的连结.指定新连结,直接设置connect第二个参数即可.断开连结,需要将connect第二个参数中的sin_family设置成 AF_UNSPEC即可. 4:UDP中使用connect可以提高效率.原因如下:普通的UDP发送两个报文内核做了如下:#1:建立连结#2:发送报文#3:断开连结#4:建立连结#5:发送报文#6:断开连结采用connect方式的UDP发送两个报文内核如下处理:#1:建立连结#2:发送报文#3:发送报文另外一点,每次发送报文内核都由可能要做路由查询.5:采用connect的UDP发送接受报文可以调用send,write和recv,read操作.当然也可以调用sendto,recvfrom.调用sendto的时候第五个参数必须是NULL,第六个参数是0.调用recvfrom,recv,read系统调用只能获取到先前connect的ip&port发送的报文.
UDP中使用connect的好处:1:会提升效率.前面已经描述了.2:高并发服务中会增加系统稳定性.原因:假设client A 通过非connect的UDP与server B,C通信.B,C提供相同服务.为了负载均衡,我们让A与B,C交替通信.A
与 B通信IPa:PORTa <----> IPb:PORTbA 与 C通信IPa:PORTa' <---->IPc:PORTc
假设PORTa 与 PORTa'相同了(在大并发情况下会发生这种情况),那么就有可能出现A等待B的报文,却收到了C的报文.导致收报错误.解决方法内就是采用connect的UDP通信方式.在A中创建两个udp,然后分别connect到B,C.
UDP中使用connect的好处:1:会提升效率.前面已经描述了.2:高并发服务中会增加系统稳定性.原因:假设client A 通过非connect的UDP与server B,C通信.B,C提供相同服务.为了负载均衡,我们让A与B,C交替通信.A
与 B通信IPa:PORTa <----> IPb:PORTbA 与 C通信IPa:PORTa' <---->IPc:PORTc
假设PORTa 与 PORTa'相同了(在大并发情况下会发生这种情况),那么就有可能出现A等待B的报文,却收到了C的报文.导致收报错误.解决方法内就是采用connect的UDP通信方式.在A中创建两个udp,然后分别connect到B,C.
相关文章推荐
- UDP服务器也可以使用connect()
- UDP socket也可以使用connect系统调用
- connect()函数不是TCP的专用,UDP中同样可以使用
- 使用nc检测udp端口是否可以正常通讯
- UDP socket也可以使用connect系统调用
- 使用nc检测udp端口是否可以正常通讯
- 使用nc检测udp端口是否可以正常通讯
- UDP 服务端与客户端均可以bind()绑定端口, 并且可以使用connect()链接后,使用send()与recv()方法!
- 使用nc检测udp端口是否可以正常通讯 【转】
- DNS可以使用TCP和UDP 协议,TCP和UDP的区别
- 在网络7层协议中,如果想使用UDP协议达到TCP协议的效果,可以在哪层做文章?(QQ 为什么采用 UDP 协议,而不采用 TCP 协议实现?)
- 测试两台主机之间是否可以UDP通信
- asp.net发送给udp端口,发送数据包,服务端为windows服务侦听.可以不使用Remoting
- VB中Winsock控制的UDP协议的使用
- python:使用udp协议发送飞秋消息
- TCP和UDP两个协议在Java通信编程中是如何被使用的
- VB中Winsock控制的UDP协议的使用
- STM32F103RC/D/E是否可以使用mbed
- 嵌入式 tcp或者udp发包协议使用结构体注意事项
- 怎么才可以使用 IPX 协议???