TCP粘包处理-网贴

Socket socket = new Socket();
socket.setTcpNoDelay(
true);

应该可以解决粘包的问题

 

分包可能不太好解决。。。

 

 

譬如
粘包 为x.5个包
半包 为0.5个包

由于网络原因 一次可能会来 0.5/1 /2/ 2.5/ 。。。。个包
当接收到时 要先看看那这个包中有多少个完整的包。把完整的包都处理了 也就是说把x都处理了。剩下的0.5留在接收区中,等待下次接收。
这回接收到的就是0.5+1.5/0.5+1.3/0.5+0.5..... 把完整的包都处理了,有残缺的扔掉 0.8的。

一般情况 接收到正确的后都要给发送端一个应答。不给应答的算超时,发送端将重发。

有头没尾的不能扔
没头有尾的可以扔
有头有尾但缺东西可以扔
有头有尾不缺东西不能扔

posted @ 2010-08-12 13:34  玩玩乐乐  阅读(876)  评论(0编辑  收藏  举报