2016-06-30 5 views
0

私はGetQueuedCompletionStatusは、彼らが作成された順にWSARecvWSASend結果を返すことをどこかで読ん、この明確なを持っていないので、ここで私の質問です1つのクライアントとの接続を開き、サーバーは最初にWSARecvを呼び出し、WSASendを呼び出しますが、クライアントは何も送信しません。サーバーでは、GetQueuedCompletionStatusWSASendからの結果を返さないでしょう。なぜなら、WSARecvの結果が最初に起こらなければならないからです。理解IO完了ポート

+0

どのような質問がありますか? WSARecvの完了後にWSASendを呼び出す必要がありますか?どのように/どのような論理? – RbMm

+0

* GetQueuedCompletionStatusがWSARecvとWSASendの結果を、作成された順番で返すようなところを読んでいます* - いいえ。結果は、I/Oが完了する順序で返されます。 –

+1

私はこの疑問を誤った仮定に基づいているので、議論の対象外としています。 –

答えて

1

バインドされたIOCP(IOCPにキューイングされたパケット)およびGetQueuedCompletionStatusがこのパケットを取得したファイルで、IO操作が完了(成功または最初に保留中)したとき。したがって、WSARecvとWSASendとWSASendがWSARecvが完了していなくても、最初にGetQueuedCompletionStatusがWSASendステータスで返されます。このIOCPのファイルで完了したio操作の直後のGetQueuedCompletionStatus

関連する問題