今天使用C#的socket做一个监听端,同步socket,超时设置为5秒
recv = client.Receive(data);
client.ReceiveTimeout = 5000;
运行过程中会出现异常:
无法立即完成一个非阻挡性套接字操作
socket默认情况下即为阻塞模式,见MSDN
ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/fxref_system/html/44af69ac-dbe9-ad42-522e-4128bafe60e4.htm
从这里找到解决方法,
在socket的Receive方法前必须明确指明其为阻塞模式
即添加下面一句
client.Blocking = true;//client为一socket
看来这真的是一个bug
记录在这里,备查!