前几天写了一个网络通讯接口,用的是.net的Socket库。
昨天调试的时候出了个问题,发送端发送若干个数据包,接收端接收的时候发现少了一个。
用wireshark截包发现发送端把其中的两个包合并成了一个发送。
网上查了资料,这是由于tcp优化算法引起的粘包机制。
接收端用的是BeginReceive接口,EndReceive返回的长度已经是多个包合并在一起产生的一个包的长度了。
如果还当作一个包处理,就会丢弃后一个包的数据信息,导致丢包问题。
前几天写了一个网络通讯接口,用的是.net的Socket库。
昨天调试的时候出了个问题,发送端发送若干个数据包,接收端接收的时候发现少了一个。
用wireshark截包发现发送端把其中的两个包合并成了一个发送。
网上查了资料,这是由于tcp优化算法引起的粘包机制。
接收端用的是BeginReceive接口,EndReceive返回的长度已经是多个包合并在一起产生的一个包的长度了。
如果还当作一个包处理,就会丢弃后一个包的数据信息,导致丢包问题。