标签: c# sockets network-programming blocking
据我所知,Socket.Accept()是一个阻塞调用,它没有超时属性(如ReceiveTimeout或SendTimeout)。因此线程将无限期地等待新连接到达。
所以我的问题是,如何在一段时间后终止此通话。我应该考虑从其他线程关闭侦听套接字吗?
有更好的方法吗?
答案 0 :(得分:1)
您可以使用Socket.Poll,它允许您等待超时连接。使用SelectMode.SelectRead进行调用,如果它返回true,则会有一个挂起的连接,您可以无阻塞地接受。
Socket.Poll
SelectMode.SelectRead
true