- 429 名前:デフォルトの名無しさん [2007/11/12(月) 10:02:48 ]
- AcceptExの完了をGetQueuedCompletionStatusで捕捉できない・・・
その次のクライアントからの送信は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も捕捉できることを 前提として書かれてるように見えます。 しかし実際コンパイルして実行してみるとやはり上記とおなじことになってしまいました。
|

|