こんにちは。
現在、VC++.NETでWinSockを用いたUDPソケットプログラミングを行っています。以下のようなプログラムを作りたいと思っているのですがうまく動作しません。
[概要]
A:送信端末
B:受信端末
1.Aから文字列"send"をB端末へ送信。
2."send"を受信した受信端末Bは、A端末へ文字列"ok"を送信。
この1と2の動作を行わせたいと思っています。この場合、A,B端末は送信と受信を行う必要があります。
[問題点(うまくいかない点)]
A→Bへ"send"は送信でき、B端末で受信できるのですが、B端末からA端末へ送信できません。B端末で送信できているのか、それともA端末で受信できていないのか?が分からない状態です。
[気づいた点]
ポート番号を分ける必要があるのでしょうか?例えば、A→Bへは9000番。B→Aへは9001番という意味です。
送信と受信を行うため、送信・受信で2つのUDPソケットを使用する必要があるのでしょうか?例えば、
s1 = socket(AF_INET, SOCK_DGRAM, 0);←送信に利用
s2 = socket(AF_INET, SOCK_DGRAM, 0);←受信に利用
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
>B端末で送信できているのか、それともA端末で受信できていないのか?
可能であればEtherRealというパケットキャプチャのインストールをおすすめします。デバッグが楽です。
>ポート番号を分ける必要があるのでしょうか?
たぶん大丈夫だと思います。
A->B の場合、Aがsendtoで指定するのは送信元ポートではなく、送信先ポートです。
それがBのソケットの受信ポートと一致してさえいればよいです。
EtherRealでモニタしていると、送信元ポートはどうやら適当に決まっているようです。
>送信と受信を行うため、送信・受信で2つのUDPソケットを使用する必要があるのでしょうか?
非ブロッキングモードでの送受信(WSAASyncSelect等を使う)の場合は、FD_READ | FD_WRITE とすれば取りこぼしなく送受信できそうな気がします。
ブロッキングモードのときはだめかもしれないです。
No.2
- 回答日時:
>ポート番号を分ける必要があるのでしょうか?
A,Bを同じPC上で動かす場合は分けておかないと区別が付かなくなるでしょうね。
異なるPC上で動かすなら分ける必要はないと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- iCloud iPhone端末変更時のLINE引継ぎ 4 2023/07/09 15:07
- その他(メールソフト・メールサービス) メールサーバーは「PC側がメールをDL済みか否か?」を何を以て感知するのか? 2 2022/12/20 14:56
- その他(メールソフト・メールサービス) 1つの端末で複数のメールアドレスを使って同じ宛先に送信した場合、相手には同じ端末からメールが送信され 3 2022/09/23 14:58
- Android(アンドロイド) ショートメッセージがAndroidのみ送受信できない 5 2023/01/02 12:50
- 格安スマホ・SIMフリースマホ SIMカード情報 3 2022/06/18 18:00
- Gmail Gmailの設定。送られて来た添付画像を返信する際、添付されないようする設定の仕方を知りたい。 2 2022/09/20 23:43
- 格安スマホ・SIMフリースマホ 楽天ハンドeSIM MNPで乗り換え端末も安く買いたいです 2 2022/07/02 23:20
- gooのスマホ ほっとくと+メッセージ(ショートメール)が使えなくなるってこと? 3 2022/07/13 07:49
- Android(アンドロイド) auのAndroid端末のSIMカードがロックされてしまいました。 6 2022/08/22 20:31
- その他(スマホアプリ・スマホゲーム) GPSアプリのゼンリー(Zenly)を登録しようとしたら自分の別の端末の番号が表示されて原因不明 1 2022/07/24 00:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
UDP通信におけるbind関数について
-
エクセル VBA でのCOMポート...
-
VB6‥ソケットについて
-
recv関数でフリーズしてしまう
-
UDP通信する時に、相手にどうや...
-
ソケットのrecvの戻り値が0
-
WinSockでの通信プログラムがう...
-
ソケットのクローズについて
-
UDPのソケットプログラミング
-
WinSockでのソケット通信
-
winsockでファイル転送
-
バインドと接続(BindException...
-
TCP/IP通信(ソケット通信)に...
-
空きポートの取得方法
-
winsockのポート指定について
-
クライアントソケットMACアドレ...
-
C#でメッセンジャー作ってます...
-
ソケット通信 同じポート番号...
-
UDPで受信終了の合図を出して受...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
エクセル VBA でのCOMポート...
-
UDP通信する時に、相手にどうや...
-
UDP通信におけるbind関数について
-
UdpClient 送信元のIPアドレ...
-
Winsockで接続待ちタイムアウト...
-
recv関数でフリーズしてしまう
-
ソケットのクローズについて
-
ソケットのrecvの戻り値が0
-
Socket通信の0バイト受信について
-
ソケット通信 同じポート番号...
-
相手のIPアドレスを取得する方法
-
ソケットでクライアントのipア...
-
VB6のwinsockでconnectできない
-
Connectエラーが出てしまう・・...
-
ソケット通信の送受信遅延-02 ...
-
同じLAN内パソコンのIPアドレス...
-
WinSockでの通信プログラムがう...
-
UDPのソケットプログラミング
-
非ブロッキングソケットのrecv...
おすすめ情報