ConnectEx с проблемой IOCP

Я сделал простую фиктивную клиентскую программу сервера/макета с помощью IOCP для некоторой цели тестирования/профилирования. (И я также хотел отметить, что я плохо знаком с асинхронным сетевым программированием),

Похоже на работы сервера хорошо с исходным клиентом, но когда фиктивный клиент пытается соединиться с сервером с функцией ConnectEx, Рабочий поток IOCP все еще заблокирован функцией GetQueuedCompletionStatus и никогда не возвращает результат, в то время как сервер преуспевает в том, чтобы принять соединение.

Каковы проблема и/или причина, и как я должен сделать для решения этой проблемы?

1
задан summerlight 26 June 2010 в 07:12
поделиться

2 ответа

Даже после того, как вы свяжете принятый сокет с IOCP, ваш рабочий поток останется заблокированным на GetQueuedCompletionStatus до тех пор, пока вы не опубликуете событие завершения «разблокировки». События завершения для операции приема / записи не будут отправляться системой, если вы не «разблокируете» свой новый сокет. За подробностями обращайтесь к исходному коду Push Framework http://www.pushframework.com Это инфраструктура сетевых приложений C ++, использующая IOCP. Уловка «разблокировки» существует в классе «IOCPQueue».

0
ответ дан 2 September 2019 в 23:29
поделиться

Я думаю, вы ответите на свой вопрос своим комментарием.

Ваша последовательность событий неверна, вы говорите, что связываете, ConnectEx, ассоциируете с IOCP.

Вы должны выполнить привязку, связать сокет с IOCP и ЗАТЕМ вызвать ConnectEx.

2
ответ дан 2 September 2019 в 23:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: