2011-06-18 21 views
1

UDP経由でLAN上に2台以上のコンピュータがある場合、それらのコンピュータは同じポートを使用して相互にメッセージを受信できる必要がありますか?たとえば、私のデスクトップがポート1550を使用してメッセージを送信していて、LAN上にあるノートブックがポート3746を使用してメッセージを聞いたり受信したりしているとします。このような状況で宛先IPだけを使用して送信することはできますか?そうでなければ、各コンピュータは受信者のポートを知っていなければならないでしょうか?異なるUDPポートを持つネットワークコンピュータ上でパケットを送受信する場合

答えて

4

UDPまたはTCPエンドポイントの場合は、アドレスとポートを設定する必要があります。イニシエータは、送信するアドレスポートを知っていなければなりません。受信者はgetpeername()呼び出しを使用して送信者のアドレスとポートの組み合わせを判断し、この情報を使用して応答メッセージのアドレス構造を構築できます。 2人は同じポート番号を使用する必要はありません。

+0

'UDP'では、データを受信すると同時に送信者のアドレスを取得するために' recvmsg() 'を使うのが普通です。 – caf

1

アプリケーション層で通信するには、宛先IPとポートを指定する必要があります。 最下層(物理フレーム)にフレームを送信するだけで済みます。

+0

彼はTCPとUDPについて質問しています。 – EJP

2
do they all have to be using the same port to be able to receive messages from one another 

いいえサーバーとクライアントが同じポート番号を使用する必要はありません。確かにこれは一般的に実行不可能です。しかし、各送信者は、所望の受信機のポート番号を知っていなければならない。応答の場合、要求には送信元アドレスとポートが入っています。要求の場合、クライアントはすでに何らかの形でサーバのIP:ポートを知っていなければなりません。

関連する問題