Клиент подключиться () не удалось, сервер принять () успешно.Зачем? - PullRequest
0 голосов
/ 14 июля 2011

У меня есть система клиент-сервер, где просто клиент должен подключиться к серверу.Вот что происходит, когда я нажимаю Connect на клиенте:

BOOL connectionStatus = m_sockClient.Connect(sIpAddr, 27386);

этот вызов завершается неудачно (connectionStatus равен 0), а GetLastError возвращает 10035 (повторите попытку)

С другой стороны, сервер принимаетсоединение!Как?как это: точка останова в первой строке функции OnReceive () сокета сервера удаляется и

BOOL receivedConnection = Accept( m_sockRecv );

возвращает значение true.

  1. Если попытка подключения () не удалась, почему этот Accept () был успешным?Это то, что я не понимаю.
  2. Как сделать блокировку CAsyncSocket?

Заранее спасибо.

1 Ответ

1 голос
/ 14 июля 2011

Это ожидаемое поведение . Ошибка WSAEWOULDBLOCK, что означает, что вам нужно подождать, пока событие OnConnect узнает, когда соединение будет полностью установлено. Я не уверен, есть ли способ сделать это блокирующим, весь смысл асинхронной обертки состоит в том, чтобы сделать все неблокирующим. Если вы хотите блокировать семантику, вы, вероятно, должны использовать CSocket .

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