私は組み込みシステムを開発していて、このTCP\IPは非常に新しいものです。私の問題は、ボードをローカルネットワークにインストールすると、このボードがIPアドレスを動的に取得すると、ネットワーク内のPCの1つ(DHCPサーバー以外)で実行されているクライアントアプリケーションと通信する必要があることです。この新しいボードと通信するには、クライアントアプリケーションはボードのIPアドレスを知っている必要があります。ボードのIPアドレスを知る方法は何ですか?UDPブロードキャストはこの目的で機能しますか?はいの場合、理解できませんので詳しく説明してください。可能であれば、Cでサンプルコードを提供してください。
1732 次
2 に答える
1
基本的な考え方は次のとおりです。
- 組み込みシステムソフトウェアは、UDPソケットを開き、それを既知のポートにバインドし、
SO_BROADCAST
ソケットオプションをで設定しますsetsockopt()
。recvfrom()
次に、ループ内のパケットを待機するために呼び出します。 - パケットタイプを指定できるパケットフォーマットを定義します。「検出」パケットタイプを定義します。
- 組み込みシステムが「検出」パケットを受信すると、名前/シリアル番号/稼働時間/ステータスを含む可能性のあるパケットで送信者に応答します。
- クライアントソフトウェアはUDPソケットを開き、
SO_BROADCAST
ソケットオプションを設定し、「検出」タイプのパケットを既知のポートとローカルブロードキャストアドレスに送信します。 - クライアントソフトウェアは、各組み込みシステムからの応答を待機し、
recvfrom()
それぞれのアドレスを記録します。 - クライアントは組み込みデバイスを選択し、それと直接通信を開始します。
于 2010-05-11T13:02:44.273 に答える
0
リソースがどれだけ制限されているかはわかりませんが、最善の解決策は、ボードにhttp://avahi.org/のようなmDNSソリューションを含めることです。組み込みプラットフォームを対象とする特定の構成があります。
これの有益な部分は、あなたが他の人とうまく遊ぶことができればあなたにたくさんを買うサービス発見のための標準的なメカニズムに引っ掛かることになるということです。AvahiはLGPLですが、BSDとASPL(?)のいくつかのバージョンである他のバージョンがあります
于 2010-05-11T13:24:28.020 に答える