2017-04-06 46 views
0

我在做一个客户端套接字。这个套接字将发送一些数据到另一个套接字并等待它的响应(如果有的话)。我希望我的客户端套接字等待响应5秒钟。问题是,如果我将它置于Receiver模式下,程序将只在获得连接后运行。我希望我的程序能够在一段时间内收听,直到他得到响应(女巫可能永远不会,如果其他套接字未被编程回答)。C#(套接字)在x秒内等待连接

回答

1

Socket类包含一个ReceiveTimeout属性,默认情况下它是无限的。

https://msdn.microsoft.com/en-us/library/system.net.sockets.socket.receivetimeout(v=vs.110).aspx

如果设置了这个值,那么Socket.Recieve()方法只会阻止,直到超时已过,那么将抛出一个TimeoutException。

Socket sock; 

//socket connection and sending data 
sock.ReceiveTimeout = 5000; 
try { 
    data = sock.Receive(); 
} 
catch (TimeoutException ex) 
{ 
    // it never answered 
} 
+0

确实如此!非常感激! – jeyejow