我正在使用Socket来监听新的连接。如何打破同步Socket.Accept()方法?如何终止此通话?

时间:2016-03-05 13:28:29

标签: c# sockets network-programming blocking

据我所知,Socket.Accept()是一个阻塞调用,它没有超时属性(如ReceiveTimeout或SendTimeout)。因此线程将无限期地等待新连接到达。

所以我的问题是,如何在一段时间后终止此​​通话。我应该考虑从其他线程关闭侦听套接字吗?

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用Socket.Poll,它允许您等待超时连接。使用SelectMode.SelectRead进行调用,如果它返回true,则会有一个挂起的连接,您可以无阻塞地接受。