分段发送字符串的问题,接收的数据为啥是有序的
来源:6-8 对于聊天室功能实现若是使用UDP来是否会更好?
慕粉1710545776
2022-03-26
老师:我发现你在设置的IoArgs类中的ByteBuffer 分配的字节数五个,如果客服端发送了200 个字节,在第一次发送一个Packet 就会告诉total 的总长度是200 ,然后,channel 一次读取5个字节,一直循环调用读取完着200个字节,在接收的时候,分了有40个段,每段只是5个字节,在网络传输过程中,接收为啥没有错乱了,其实文件拆分也是一样的原理,拆分了,还要合并,这么保证还和原来的文件一模一样了
写回答
1回答
-
Qiujuer
2022-03-28
保证顺序收发就行呀,TCP本身是保证在单线程下是有序的;所以我们只需要保证在发送端每次发送均为有序发送(一个线程);在接收端也是一样虽然是多线程并发,但是实际上每次处理channel的时候仅仅只会有一个线程去从网络中读取数据。
然后再放到后续的处理队列中,而处理队列也是有序的处理,所以整体不会出现乱掉的情况。
022022-08-30
相似问题