- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:winsockの非同期処理について)
winsockの非同期処理について
このQ&Aのポイント
- winsockを使用した双方向通信で非同期処理を行いたいが、エラーが発生している
- クライアント側とサーバ側にWSAAsyncSelectが正しく記載されているか確認したい
- エラー番号10035が発生し、非ブロッキングモードの処理がされていない可能性がある
- みんなの回答 (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); }
その他の回答 (1)
- nobunaga_oda
- ベストアンサー率72% (8/11)
回答No.1
WSAAsyncSelectを使用して非同期にしているので、ブロッ キングするような関数(この場合はconnect)がすぐに制御 を返し、WSAEWOULDBLOCK(エラーナンバー: 10035)を返すのは正しい動作です。
お礼
ありがとうございました。 connectの後すぐエラー処理をしていたので、それで問題があったのですね。 Connect関数を読んだあとは、WindowProcの処理をしてしまうのですね。 双方向通信を作成しているので、WindowProcの処理方法を勉強しないといけませんね。