我正在制作一个客户端套接字。此套接字将一些数据发送到另一个套接字并等待其响应(如果有)。我希望我的客户端套接字等待响应5秒钟。问题是,如果我把它置于接收器模式,程序将只在它获得连接后运行。我希望我的程序能够监听一段时间,直到他得到一个响应(如果另一个套接字没有编程回答,女巫可能永远不会)。
答案 0 :(得分:1)
Socket类包含一个ReceiveTimeout属性,默认情况下为Infinite。
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
}