套接字Accept方法不会抛出SocketException

时间:2011-11-07 05:12:55

标签: c# sockets

我编写了一个套接字应用程序,并使用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。我是如何解决这个问题的?

1 个答案:

答案 0 :(得分:0)

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