C# tcp客户端的socket接收问题
阻塞的tcp连接的客户端SOCKet,建立连接后,与server通信,
有时候是指令通信,即问即答;
有时是数据通信,发送出收数据指令后,要收N包数据,
有时是发送指令后,收到一个准备好的指令就发送一包数据,循环N次
有一项指令command_1启动后,开启监听异常,停止command_1指令下发后,要中止监听异常的,还要等待不定长时间来收停止的回应。
对于正在等待接收状态的socket,我强制中止线程之后,socket并没有退出等收的状态,于是下次指令发送不成功,甚至线程根本没有被中止,,,,
怎么强制退出一个等待中的socket??
我不能做接收有timeout的吧?很多时候,等的时间不定,
想终止等收的也不能先发一个废数,因为我每次的接收都判断帧正确与否,再说废数也会存在buff里,影响我下次的数据收发和判断的吧。
困惑,,求解
[解决办法]
百度一下:"C# Socket通信 阻塞性线程的快速终止"
看起来很美,没测
[解决办法]
while加个判断信息 break退出
[解决办法]
调用Socket.Close(),阻塞中的Accept/Receive方法就会抛出异常,捕获这个异常不做任何处理,退出
[解决办法]