winsockで双方向通信のため、非同期処理を行っているのですが、うまくいきません。
クライアント側で、WSAAsyncSelectの処理の後、Connectを呼んでいるのですが、Connectでエラーメッセージを返します。(エラーナンバー: 10035)
サーバ側はaccept処理はうまくいっているのですが、accept後うまく処理を返していないためだと思うのですが...
で質問は、
1.クライアント側、サーバ側にそれぞれ、WSAAsyncSelect
を記載しても問題ないか? クライアント側はConnect前で宣言。 サーバ側はbind前で宣言しています。
2.エラー番号10035は非ブロッキングモードで処理されないためにおきています。 Connectで非ブロッキングモード処理がされていないためだと思うのですが、他に記述しないといけない関数があるのでしょうか?
クライアント側:
// 非同期処理
if(WSAAsyncSelect(client_s,this->m_hWnd, FM_TCPPROC, FD_CONNECT | FD_READ | FD_WRITE | FD_CLOSE) == SOCKET_ERROR){
return FALSE;
}
// コネクト処理
memset(&client,0,sizeof(client));
client.sin_family = AF_INET;
client.sin_addr.s_addr = inet_addr(IpAddress);
client.sin_port = htons(PORT_NO);
if(connect(client_s, (LPSOCKADDR)&client, sizeof(client)) == SOCKET_ERROR){ <-- ここでエラー
long ErrNum = WSAGetLastError(); <-- ここでエラーNoがかえる。
return FALSE;
}else{
NetFlg = true;
}
お分かりになる方教えてくださいませ。よろしくお願いします。
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);
}
ありがとうございました。
connectの後すぐエラー処理をしていたので、それで問題があったのですね。
Connect関数を読んだあとは、WindowProcの処理をしてしまうのですね。
双方向通信を作成しているので、WindowProcの処理方法を勉強しないといけませんね。
No.1
- 回答日時:
WSAAsyncSelectを使用して非同期にしているので、ブロッ
キングするような関数(この場合はconnect)がすぐに制御
を返し、WSAEWOULDBLOCK(エラーナンバー: 10035)を返すのは正しい動作です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- 情報処理技術者・Microsoft認定資格 応用情報処理技術者試験のシステム利用率の計算について 2 2022/03/28 07:43
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- Excel(エクセル) エクセルVBA マクロ処理中のポップアップメッセージについて 1 2023/08/04 21:34
- デスクトップパソコン 動画編集やフォトショップ、イラストレーターなど、このスペックで問題ないですか? 7 2022/08/19 18:10
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
このQ&Aを見た人はこんなQ&Aも見ています
-
カンパ〜イ!←最初の1杯目、なに頼む?
飲み会で最初に頼む1杯、自由に頼むとしたら何を頼みますか? 最初はビールという縛りは無しにして、好きなものを飲むとしたら何を飲みたいですか。
-
大人になっても苦手な食べ物、ありますか?
大人になっても、我慢してもどうしても食べれないほど苦手なものってありますよね。 あなたにとっての今でもどうしても苦手なものはなんですか?
-
忘れられない激○○料理
これまでに食べたもののなかで、もっとも「激○○」だった料理を教えて下さい。 激辛、でも激甘でも。 激ウマ、でも激マズでも。
-
プリン+醤油=ウニみたいな組み合わせメニューを教えて!
プリンと醤油を一緒に食べると「ウニ」の味がする! というような意外な組み合わせから、新しい味になる食べ物って色々ありますよね。 あなたがこれまでに試した「組み合わせメニュー」を教えてください。
-
好きな和訳タイトルを教えてください
洋書・洋画の素敵な和訳タイトルをたくさん知りたいです!【例】 『Wuthering Heights』→『嵐が丘』
-
Connectエラーが出てしまう・・・。
C言語・C++・C#
-
winsock通信時エラーの回避
Visual Basic(VBA)
-
Winsockで接続待ちタイムアウトを設定する方法
C言語・C++・C#
-
-
4
UTF-8で5~6バイトになる文字コード
その他(プログラミング・Web制作)
-
5
CloseとDisposeの違い
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
特定のファイルを他のプロセス...
-
IF文に時間(何時から何時ま...
-
private subモジュールを他のモ...
-
特定の名前のオートシェイプの...
-
シグナル 6(SIGABRT)とは?
-
ExcelのVBAで、選択したファイ...
-
マクロで、次のコードへ行く前...
-
どうやってもFor文を抜けてしま...
-
VBAの進捗状況をリアルタイ...
-
vbaレポート名の指定が間違って...
-
順番に処理させたい
-
Excel VBA セルの名前があるか...
-
VB.NET SPRED(チェックボック...
-
VB6にてネットワーク上にある共...
-
エクセル VBAで複数セル選択時...
-
CImage::Loadの戻り値は何でし...
-
どう増強すべきか
-
【C#】Page_Loadさせない方法に...
-
VB6.0で、ランタイムエラーを全...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
IF文に時間(何時から何時ま...
-
シグナル 6(SIGABRT)とは?
-
private subモジュールを他のモ...
-
特定の名前のオートシェイプの...
-
どう増強すべきか
-
vbaのエラー対応(実行時エラー...
-
マクロで、次のコードへ行く前...
-
ExcelのVBAで、選択したファイ...
-
どうやってもFor文を抜けてしま...
-
【Vb.net】プリンタジョブの取得
-
Excel VBA セルの名前があるか...
-
エクセル VBAで複数セル選択時...
-
特定のファイルを他のプロセス...
-
【C#】Page_Loadさせない方法に...
-
VBA 複数の行を高速で削除する...
-
Functionで戻り値を複数返す方法
-
シェルスクリプトでファイル内...
-
Word VBA。各マクロの間に待ち...
-
StatusStripの表示が更新されな...
おすすめ情報