ネットワークプログラミング相談室 Port20
■ このスレッドは過去ログ倉庫に格納されています
0429デフォルトの名無しさん
2007/11/12(月) 10:02:48その次のクライアントからの送信はGetQueuedCompletionStatusで捕捉できるのですが
第4引数のLPOVERLAPPEDはAcceptExに渡したのがきます。 ><
期待したのは
メインスレッドでAcceptExを呼ぶ -> クライアントがconnectしてくる ->
ワーカースレッドで呼ばれてたGetQueuedCompletionStatusが処理を返す -> クライアントが"Hello"と送る -> ワーカースレッドで呼ばれてた(ry
という感じなのですが
実際は
メインスレッドでAcceptExを呼ぶ -> クライアントがconnectしてくる ->
まだGetQueuedCompletionStatusから返らず@ワーカースレッド -> クライアントが"Hello"と送る -> ここで初めてGetQueuedCompletionStatusが処理を返す
となってしまします。
初めてGetQueuedCompletionStatusが返ったときのOVERLAPPED::InternalHighは5となっておりクライアントからの送信に反応したものと思われます。
AcceptExの完了を捕捉しないのが仕様かと思ったのですが
ttp://www.codeproject.com/useritems/iocpwalkthrough.aspのコードを見てみるとワーカースレッド内にswitch文内をみるとsend、recvのみならずacceptも捕捉できることを
前提として書かれてるように見えます。 しかし実際コンパイルして実行してみるとやはり上記とおなじことになってしまいました。
■ このスレッドは過去ログ倉庫に格納されています