
ソケットプログラミングでの質問です.
初心者です.
UDPクライアントで
sock = socket(PF_INET,SOCK_DGRAM,0)
でUDPソケットを生成した後に
bind()なしで,UDPサーバ宛にsendto()
を行った場合,
サーバのrecvfrom()でクライアントの
IPアドレスとポート番号が受け取ることができると思いますが
ここでのIPアドレスはクライアントのアドレスで,
ポート番号は他のクライアントの他ソケットが使用していないポート番号
が受け取ることができると考えてよろしいですか?
クライアントのsendto()で自動的にポート番号が割り当てられるが,
クライアントが,どのポートから送信したのかを知る方法はないですか?
No.2ベストアンサー
- 回答日時:
No.1 です。
回答が遅くなってしまったことをお詫びします。
connect() や bind() なしで sendto() を呼び出した場合は、sendto() の
処理が実行される時点でソケットと任意のポートの結びつけが行われます。
従って、sendto() を呼び出したあとで getsockname() を使用すれば、
送信元のポート番号を取得することが可能なはずです。
No.1
- 回答日時:
あまり時間がないため、手短に書かせていただきます。
まず、bind() せずにデータを送信した場合、サーバ側で受信した
データグラムに含まれるポート番号は、koton_ さんの認識どおり、
クライアントで任意に割り当てられたポート番号となります。
(この一時的に割り当てられるポート番号をエフェメラルポートと
言ったりします。)
次に、一般的なBSDライクの Socket APi であれば、
送信に使用したポート番号をクライアント側で知るためには、
getsockname() という関数を使用するのが一般的だと思います。
関数の詳細については、申し訳ないですがお手持ちのマニュアルや
インターネット等で検索してみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
UdpClient 送信元のIPアドレ...
-
ソケット通信 同じポート番号...
-
ソケットのrecvの戻り値が0
-
エクセル VBA でのCOMポート...
-
TCP/IPプログラミングでのselec...
-
VB6‥ソケットについて
-
ソケットプログラミングに関す...
-
ネットワークプログラミングに...
-
UDP通信におけるbind関数について
-
ソケットを用いた1対多通信につ...
-
recv関数でフリーズしてしまう
-
fsockopenのソケットが全然分か...
-
Macターミナルで実行中のプログ...
-
Excel(VBA)でSetTimer関数を使...
-
AIXでのプロセス使用メモリの最...
-
C# シリアル通信でデータ受信...
-
FOM出版の公認テキスト&問題集...
-
メッセージボックスのボタン名変更
-
powershell を使いカレントディ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
Socket通信の0バイト受信について
-
Winsockで接続待ちタイムアウト...
-
ソケットのクローズについて
-
UDP通信におけるbind関数について
-
VB6のwinsockでconnectできない
-
エクセル VBA でのCOMポート...
-
SIPがNATを越えられない理由
-
ソケットでクライアントのipア...
-
UdpClient 送信元のIPアドレ...
-
ソケット通信 同じポート番号...
-
VC++でのソケット通信について
-
TCP/IPプログラミングでのselec...
-
ソケット通信
-
ソケットのrecvの戻り値が0
-
UDP通信する時に、相手にどうや...
-
vxWorks6.4を使用してソケット...
-
SendRequestでヘッダが受信され...
-
ソケットを用いた1対多通信につ...
-
どうか、POSTでのファイル転送...
おすすめ情報