我编写了一个套接字应用程序,并使用Close()
方法等待套接字状态:
serverSocket =
new Socket(AddressFamily.InterNetworkV6, SocketType.Stream,
ProtocolType.Tcp);
serverSocket.SetSocketOption(SocketOptionLevel.IPv6, (SocketOptionName) 27, 0);
serverSocket.Bind(new IPEndPoint(IPAddress.IPv6Any, this.listenPort));
serverSocket.Listen(4);
serverSocket.Accept()
当我在另一个线程中调用serverSocket.Close()
时,Accept()
方法不会抛出我用作套接字状态的socketexception。我是如何解决这个问题的?
答案 0 :(得分:0)
我建议您使用BeginAccept或AcceptAsync,它允许您在不阻塞的情况下等待连接,并以自己的方式解决您的问题。通过将回调链接到异步函数,可以非常容易地在.NET中开发异步套接字代码。这具有额外的好处,即在不活动期间不消耗任何线程。