locked
ブロッキングソケット使用でrecv()がERROR_IO_PENDINGを返す RRS feed

  • 質問

  • お世話になっております。

    Windows2012R2+VisualStudio2013+VC(MFC)を使用して

    DLL(ソケットサーバー機能)を開発しております。

    その中で使用しているWinsock2.0のrecv()関数が、ERROR_IO_PENDING(997)を稀に返す時があり

    対応に苦心しております。

    このエラーはブロッキングモードでは発生しないと考えておりましたが、このエラーについて

    考えられる原因をご存知の方はいらっしゃいますでしょうか?

    具体的には、DLLの公開している関数(OpenSocket()、仮名)で接続待ちスレッド(ListenThread)を起動し、

    ListenThread内でbind、listen、acceptを行い、接続が確立されたら受信スレッド(ServerThread)を起動します。

    recv()はそのServerThreadの中でポーリングして待ち受けています。(recvのタイムアウトは100ms)

    以上、よろしくお願いいたします。

    2016年11月2日 4:56

回答

すべての返信

  • oooohです。

    MSDNフォーラムのVisual Studioフォーラムで聞いた方が回答が付きそうな内容かと。

    • 回答としてマーク piroshi164 2016年11月2日 6:58
    2016年11月2日 6:53
  • oooohさん

    ご教授ありがとうございます。いったん回答つけさせていただき、

    そちらで改めて問い合わせしてみます。

    ありがとうございました。

    2016年11月2日 6:58