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的。
一般情况 接收到正确的后都要给发送端一个应答。不给应答的算超时,发送端将重发。
有头没尾的不能扔
没头有尾的可以扔
有头有尾但缺东西可以扔
有头有尾不缺东西不能扔