[英]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提供一些示例代碼。
基本思想是:
setsockopt()
設置SO_BROADCAST
套接字選項。 然后,它調用recvfrom()
以等待循環中的數據包。 SO_BROADCAST
套接字選項,並將“發現”類型的數據包發送到眾所周知的端口和本地廣播地址。 recvfrom()
等待來自每個嵌入式系統的響應,並記錄每個地址。 我不知道您的資源有多有限,但是最好的解決方案是在您的開發板中包含一個mDNS解決方案,例如http://avahi.org/ 。 有針對嵌入式平台的特定配置。
這樣做的好處是,您將陷入一種標准的服務發現機制中,如果您能與其他人打成一片,這將為您帶來很多好處。 Avahi是LGPL,但還有其他版本是BSD和ASPL(?)的某個版本
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.