- ベストアンサー
MFCでソケット通信がしたいのですができません
http://www.g-ishihara.com/mfc_nw_01.htm このサイトを参考に作っているのですが、次のようなエラーメッセージが出て動きません。 「Error : この操作を正しく終了しました。」 これはどういう意味でしょう? 調べてもよくわかりません。 ちなみに各エディットボックスの変数値はすべて、CString,Value型にしています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
LAN->WAN->LANの場合、経験上正しく接続できないルータが存在します。 同一PC上にサーバとクライアントが存在するのであれば、開発中は 127.0.0.1(自ホスト)へ接続し、動作確認の際には実際にWANの向こう (会社、学校、ネットカフェなど)から接続試験を行うと良いと思います。 また、ソケット関連のプログラミングで問題が起きた場合、パケットキャプチャが しばしば有効です。 Wiresharkなどをインストールし、具体的にどのパケットまで出ていて 誰がどのパケットに応答しないのか確認しましょう。
その他の回答 (1)
- jjk65536
- ベストアンサー率59% (66/111)
回答No.1
どこかでerr=1になっているので、「(6)エラー表示」のブロックが実行されています。 では、どこまではerr=0であったか確認されましたか? CSocketのメンバ関数を最後にコールした際に、「この操作を正しく終了しました。」を示す 終了ステートで終了(つまり正常終了)していることになります。 ただ、ご質問の文章とソースでは、最後にコールしたメンバ関数がどれであるのか判断できません。 憶測では、recv == 0のところをエラー判定してしまうと20バイト以下のデータを受信した際に エラーと誤判定するバグがあるような気もします。 確認してませんけど。
補足
間違いはIP入力とポート番号を逆に入れていたことでした。 ここまではわかったのですが、LAN->WAN->LANへの通信がうまくいきません。ポートを開けて、外部からパケットをサーバに送るようにルータを設定しました。このとき自分のPCでサーバとクライアントを動かして、クライアントから自分のグローバルアドレス向けにパケットを送っても「Error : 対象のコンピュータによって拒否されたため、接続できませんでした。」というエラーが出てしまい、正常な通信ができません。どうすればいいのでしょうか?よろしくお願いします。