如何理解分片
我大概可以理解分片的原因和道理。
但是书上有句话是:只有当所有分片到达目的地的时候才会通知应用程序。
那我作如下假设。
我用TCP发了两次数据,分别是3字节和4字节。
那我有没有可能在recv的时候收到7次1个字节的包?按照上面那句话,这是不可能的。
那我有没有可能在recv的时候收到一个7字节的包?这个我理解为是可能的。
所以,接收到的数据是不是肯定是数据完整的呢(就算是有可能多个数据被合并成一个包)?我如果一次性发一个32字节的数据,有没有可能在另外一端的应用层分多次收到呢?
谢谢!
[解决办法]
是有可能分多次收到的,自己要判断没有接收完全。
根据自己定义的协议来,TCP粘包问题就是楼主所说的现象。
但是TCP本身是安全的
[解决办法]
TCP是流,你看到所谓发送3字节 4字节都是在用户态
执行是在内核态,所以你收到从1到7的组包都有可能。
没有什么所谓的粘包说,流哪来的包?
[解决办法]