3

ローカル ネットワーク内の多くの Windows および Linux ホスト間で UDP を介して通信するアプリケーション (C/C++ で記述) があります (winsock / Linux-Sockets 経由)。私は 1 つのポートしか使用しないため、各ホストで 1 つのソケットのみを使用します。一部のメッセージは Broadcastet であり、返信は多くの場合ユニキャストですが、いくつかは Broadcast でもあります。これまでのところすべてが機能していますが、

(recvfrom 経由で) 受信したパケットがブロードキャストかユニキャストかを確認するにはどうすればよいですか?

私が見つけた唯一の解決策は、この情報をペイロード内で送信するか、別のポートを使用することでした。どっちもあんまり得意じゃない…

4

1 に答える 1

4

Linux 側では、 でPKT_INFO ip(7)ソケット オプションを設定しsetsockopt(2)、 を使用recvmsg(2)して UDP パケットの宛先アドレスを取得できます。

于 2012-05-19T18:14:40.633 に答える