2つのUDPソケット(SOCKET
)があります。1つは送信用で、もう1つはWindowsマシンでの受信用です。どちらもうまく機能しますが、問題は、送信ソケットからメッセージを受信しているプログラムが、メッセージを送信したのと同じポートに応答することです。
送信ソケットをバインドしない場合、を使用しsendto
て送信するエフェメラルポートを選択することを知っています。
次のいずれかが可能かどうかを知りたいのですが、可能であれば、それを行うための推奨される方法は何ですか。
- 送信ソケットと受信ソケットの両方を選択したポートにバインドして、外部プログラムがメッセージを送り返したときにメッセージを受信できるようにします。
- 最後にメッセージを送信したポートで受信するように、受信ソケットがバインドされているポートを更新します(これによって競合状態が発生するかどうかはわかりません)。
- 他の正しい方法。
これまでに試しました:
- 送信ソケットをバインドしていません(開いているポートから宛先ポートに送信します)。変更されない限り、そのポートでメッセージを正常に受信できますが、最終的には変更されます。
- 送信ソケットと受信ソケットの両方を目的のポートにバインドします。これにより、スニファを使用してパケットを監視するときに望ましい動作が作成されますが、メッセージが正しいポートとIPに送信されていることを確認しても、受信ソケットはメッセージを受信しません。
パケットは複数の外部エンティティから受信されており、特定の順序であることが保証されているわけではありません。
前もって感謝します!