UDP メッセージの送信中に Bind() は必要ありません。理由: OS が IP アドレスとポート番号で送信者を自動的にバインドするため、明示的に bind() する必要はありません。
UDP メッセージを受信するために bind() が必要なのはなぜですか? 送信者は、受信した前のメッセージから受信者の IP アドレスとポート番号を取得し、その権利を使用して UDP メッセージを送信できますか?
UDP メッセージの送信中に Bind() は必要ありません。理由: OS が IP アドレスとポート番号で送信者を自動的にバインドするため、明示的に bind() する必要はありません。
UDP メッセージを受信するために bind() が必要なのはなぜですか? 送信者は、受信した前のメッセージから受信者の IP アドレスとポート番号を取得し、その権利を使用して UDP メッセージを送信できますか?
UDP はコネクションレスですが、依然としてバインドされたポートに基づいています。sendto()
受信側は、 、connect()
、またはを呼び出しbind()
てローカル バインド ポートを確立し、OS がインバウンド データを許可するポートを認識し、送信側がデータを送信する必要があるポートを確立する必要があります。受信者がパケットを送信する最初のパーティである場合、バインドは暗黙的である可能性がありますが、受信者が最初のパーティでない場合は、明示的にバインドを行う必要があります。
レシーバーがローカル ポートをバインドしていない場合、ポートは最悪の場合開かれないか、OS によってランダムに選択されるだけです。いずれにせよ、受信者が外部手段を通じて送信者に通知しない限り、送信者はデータを送信するポートを知る見込みがありません。その場合でも、受信者がランダムに割り当てられたポートを検出するには、ソケットを照会する必要がありますが、バインドされていないソケットを照会することはできません。そのため、受信者は何らかの方法でローカル バインドを実行する必要があります。