簡體   English   中英

如何使用UDP廣播消息知道遠程主機的IP地址?

[英]How can I know the IP address of a remote host by using UDP broadcast message?

我正在開發一個嵌入式系統,並且對於此TCP \\ IP來說還很新。 我的問題是,一旦我將開發板安裝在局域網中,並且該開發板將動態獲取其IP地址,它就必須與運行在網絡中一台PC(而非DHCP服務器)上的客戶端應用程序進行通信。 要與該新板通信,客戶端應用程序必須知道板的IP地址。 怎樣知道單板的IP地址? UDP廣播是否可以用於此目的? 如果是,請詳細解釋,因為我無法理解。 如果可能的話,請用C提供一些示例代碼。

基本思想是:

  • 嵌入式系統軟件將打開UDP套接字,將其綁定到知名端口,並使用setsockopt()設置SO_BROADCAST套接字選項。 然后,它調用recvfrom()以等待循環中的數據包。
  • 定義允許指定數據包類型的數據包格式。 定義“發現”包類型。
  • 如果嵌入式系統收到“發現”數據包,它將以可能包含其名稱/序列號/正常運行時間/狀態的數據包響應發送方。
  • 客戶端軟件打開UDP套接字,設置SO_BROADCAST套接字選項,並將“發現”類型的數據包發送到眾所周知的端口和本地廣播地址。
  • 客戶端軟件使用recvfrom()等待來自每個嵌入式系統的響應,並記錄每個地址。
  • 客戶端選擇嵌入式設備並開始直接與其進行通信。

我不知道您的資源有多有限,但是最好的解決方案是在您的開發板中包含一個mDNS解決方案,例如http://avahi.org/ 有針對嵌入式平台的特定配置。

這樣做的好處是,您將陷入一種標准的服務發現機制中,如果您能與其他人打成一片,這將為您帶來很多好處。 Avahi是LGPL,但還有其他版本是BSD和ASPL(?)的某個版本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM