套接字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。有什么好主意吗?

套接字Accept方法不会抛出SocketException

我建议您使用BeginAccept或AcceptAsync,这将允许您等待连接而不阻塞,并以自己的方式解决您的问题。通过将回调链接到异步函数,在。net中开发异步套接字代码非常容易。这还有一个额外的好处,即在不活动期间不会消耗任何线程。