Метод Accept сокета не генерирует исключение SocketException - PullRequest
1 голос
/ 07 ноября 2011

Я написал приложение для сокетов и использую метод 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 голосов
/ 07 ноября 2011

Я рекомендую вам использовать BeginAccept или AcceptAsync, которые позволят вам ждать соединения без блокировки и по-своему решат вашу проблему.Разработать асинхронный код сокетов в .NET очень просто, связав обратные вызовы с асинхронными функциями.Это дает дополнительное преимущество, заключающееся в отсутствии потоков во время периодов бездействия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...