closesocket запускает процедуру завершения WSARecvFrom - PullRequest
1 голос
/ 27 апреля 2009

Я заметил, что когда я вызываю closesocket, подпрограмма завершения WSARecvFrom (которая к тому времени ожидает входящие данные) запускается с dwError = 0 и cbTransferred = garbage, даже если нет ожидающих входящих данных для этого сокета.

Можно ли как-нибудь не вызывать его, когда я закрываю сокет? Я пытался вызвать shutdown до closesocket, но это не помогло.

1 Ответ

1 голос
/ 04 июня 2009

Какое значение возвращает сам WSARecvFrom ()? Я сам не использовал WSARecvFrom (), но MSDN говорит, что dwError - это состояние завершения, поэтому я думаю, что 0 означает фактическую ошибку или отсутствие данных.

Кроме того, вы вызываете CancelIo () перед вызовом closesocket ()?

...