我正在开发一个嵌入式系统,这个TCP \ IP是一个新手。我的问题是,一旦我将我的主板安装在本地网络中,并且该主板将动态获取其IP地址,它必须与运行在网络中的一台PC(除DHCP服务器之外)上的客户端应用程序通信。要与此新板通信,客户端应用程序需要知道板的IP地址。了解电路板IP地址的方法是什么? UDP广播是否会为此目的而工作?如果是,请详细解释,因为我无法理解。如果可能,请用C语言提供一些示例代码。
答案 0 :(得分:1)
基本理念是:
SO_BROADCAST
套接字选项设置为setsockopt()
。然后它调用recvfrom()
来等待循环中的数据包。SO_BROADCAST
套接字选项,并将“发现”类型数据包发送到众所周知的端口和本地广播地址。recvfrom()
,记录每个响应的地址。答案 1 :(得分:0)
我不知道您的资源有多受限制,但最好的解决方案是在您的主板上添加http://avahi.org/等mDNS解决方案。有针对嵌入式平台的特定配置。
这样做的有益之处在于,如果您能够与他人合作,您将会接触到服务发现的标准机制,这会给您带来很多好处。 Avahi是LGPL,但还有其他版本的BSD和ASPL(?)