• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:winsockの非同期処理について)

winsockの非同期処理について

このQ&Aのポイント
  • winsockを使用した双方向通信で非同期処理を行いたいが、エラーが発生している
  • クライアント側とサーバ側にWSAAsyncSelectが正しく記載されているか確認したい
  • エラー番号10035が発生し、非ブロッキングモードの処理がされていない可能性がある

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

補足です ちなみに poposan さんの プログラムの場合 this->m_hWndにFM_TCPPROCメッセージが飛びます メッセージを拾い、connectに対する処理を書けばよろしいと思います // サンプルコード ------------ LRESULT CXxxx::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case FM_TCPPROC: nEventCode = WSAGETSELECTEVENT(lParam); nErrorCode = WSAGETSELECTERROR(lParam); switch(nEventCode) { case FD_CONNECT: // nErrorCode は connectの戻り値 // ここでエラー処理など break; } break; } return CWnd::WindowProc(message, wParam, lParam); }

poposan
質問者

お礼

ありがとうございました。 connectの後すぐエラー処理をしていたので、それで問題があったのですね。 Connect関数を読んだあとは、WindowProcの処理をしてしまうのですね。 双方向通信を作成しているので、WindowProcの処理方法を勉強しないといけませんね。

その他の回答 (1)

回答No.1

WSAAsyncSelectを使用して非同期にしているので、ブロッ キングするような関数(この場合はconnect)がすぐに制御 を返し、WSAEWOULDBLOCK(エラーナンバー: 10035)を返すのは正しい動作です。