【发布时间】:2017-09-02 04:38:33
【问题描述】:
我正在制作一个客户端套接字。该套接字将向另一个套接字发送一些数据并等待其响应(如果有)。我希望我的客户端套接字等待响应 5 秒。问题是,如果我把它置于接收器模式,程序只有在它获得连接后才会运行。我希望我的程序监听一段时间,直到他得到响应(如果另一个套接字没有被编程为应答,女巫可能永远不会)。
【问题讨论】:
标签: c# sockets client listener wait
我正在制作一个客户端套接字。该套接字将向另一个套接字发送一些数据并等待其响应(如果有)。我希望我的客户端套接字等待响应 5 秒。问题是,如果我把它置于接收器模式,程序只有在它获得连接后才会运行。我希望我的程序监听一段时间,直到他得到响应(如果另一个套接字没有被编程为应答,女巫可能永远不会)。
【问题讨论】:
标签: c# sockets client listener wait
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
}
【讨论】: