LAN に組み込みデバイスがあり、コンピューターの Linux に C++ アプリケーションがあります。C++ からサブネット ブロードキャスト アドレスで UDP ブロードキャストを行ったところ、デバイスから署名付きのメッセージが返されました。現在、両者はお互いの IP アドレスを持っています。C++ から特にデバイス IP に UDP パケットを送信する必要があります。デバイスへの最初の呼び出しは UDP 経由で行われましたが、ソケット オプションでブロードキャスト オプションが使用されていました。パケット生成ツールを使ったいくつかの実験では、UDP が MAC ID を使用して宛先を見つけているという印象を受けました。では、LAN 内の特定の IP に UDP パケットを送信したい場合、C++ ではどのような方法が必要ですか? ありがとう
質問する
1369 次
3 に答える
0
stefaanv への回答に基づいて、あなたの質問は実際には「スレッド A からスレッド B への IP アドレスを取得するにはどうすればよいですか?」のように思えます。スレッド A はブロードキャスト メッセージへの応答を受信し、スレッド B はデバイス固有のコミュニケーション。
これを行う 1 つの方法は、スレッド A からスレッド B を作成し、IP アドレスを引数としてスレッド B の関数に渡すことです。このようにして、スレッド B は最初からどの IP アドレスと通信するかを認識します。
スレッド A の前にスレッド B を起動して実行する必要がある場合は、グローバル変数を使用して IP アドレスを共有し、たとえばセマフォを使用して、スレッド A が IP アドレスを設定したときにスレッド B に通知できるようにします。スレッド A がそのグローバル変数を書き込む唯一のスレッドであることを確認してください。そうしないと、別の同期レイヤーをセットアップする必要があります。時間。
于 2013-07-02T14:00:41.123 に答える