问题描述
socket服务端接收数据,用循环一段段的接收,在循环里判断报文头记录的长度和实际接收的长度相同时则跳出循环,现在我困惑的是如果发生丢包即两者长度不等时,receive方法就一直阻塞。我是新起的线程去接收数据的。我想弄明白如果阻塞的话要怎么处理,设置接收的超时时间吗?
解决方案
解决方案二:
tcp,理论上是不会丢包的,除非是接收频率过低,导致缓冲区溢出udp,应该当作肯定会丢1次包来处理,如果你要保证数据完整性,就要设计自己的协议
解决方案三:
引用1楼Poopaye的回复:
tcp,理论上是不会丢包的,除非是接收频率过低,导致缓冲区溢出udp,应该当作肯定会丢1次包来处理,如果你要保证数据完整性,就要设计自己的协议
那如果发生接收阻塞要怎么处理,我这个是TCP协议
解决方案四:
异步..或者直接下载一个框架用就行了..自己开发很累而且很多异常问题
解决方案五:
首先,tcp是基于流的,理论上不会丢包(如1楼所说),不可能你前面收不到而收到后面其次,你的问题是你因为收不到包头里记录的指定的长度,所以一直等待,这个问题你应该设置接收超时,如果在网络正常的情况下一直出现这个问题,则要么是你的程序问题,要么是对方的程序问题。
解决方案六:
引用2楼W_wjl1900的回复:
那如果发生接收阻塞要怎么处理,我这个是TCP协议
Recieve方法就是阻塞式的,收到数据才会返回,我不明白你说的处理是什么?
时间: 2024-10-18 13:43:28