套接字Accept方法不会抛出SocketException
本文关键字:SocketException Accept 方法 套接字 | 更新日期: 2023-09-27 18:13:37
我编写了一个套接字应用程序,并使用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。有什么好主意吗?
我建议您使用BeginAccept或AcceptAsync,这将允许您等待连接而不阻塞,并以自己的方式解决您的问题。通过将回调链接到异步函数,在。net中开发异步套接字代码非常容易。这还有一个额外的好处,即在不活动期间不会消耗任何线程。