我有2个盒子: - 一个嵌入式设备(带有linux的ARM Omap),我称之为“ Omap ” . - a PC (可以是Windows或Linux) .
场景1
两个盒子都在同一个网络中(例如:我的办公室) .
Omap从DHCP服务器获取其地址(例如:192.168.10.110) . PC始终具有相同的地址(例如192.168.10.104) .
我可以在任何端口上成功交换UDP广播包 .
成功 .
情景2
这2个框位于网络 withOUT DHCP服务器中 .
PC具有静态IP地址(例如:10.10.10.20) .
Omap启动,查找DHCP服务器,找不到它,并且处于我称之为"bad IP address"状态的状态 .
现在......从Omap广播UDP数据包起作用:PC可以看到它们 .
相反的方法不起作用:Omap看不到PC广播的UDP数据包 . 我在另一台PC上使用Wireshark来验证数据包是否正在发送 .
失败 .
我试图改变Omap的ip地址(使用ifconfig)......没有运气 .
我错过了什么?
为了完成图片,当Omap在场景2中时,如果我运行udhcpc ...它可以与DHCP服务器通信并获得IP地址 . 我也看到了Wireshark的数据包 . 这意味着DHCP客户端能够广播UDP数据包 . (是的,我尝试使用DHCP端口67/68,但它不起作用) .
我正在使用Boost C Asio UDP套接字 . 具体来说,我拿了多播示例并将其更改为进行广播 .
任何帮助表示赞赏 .
谢谢,Benedetto
PS:一些澄清 .
Omap设备是一个嵌入式设备,我的目标是客户不必在现场设置其IP地址 . 这就是我与PC交换广播数据包的原因,以便从我在PC上运行的其他软件中获取"good" IP地址(即使在具有静态IP地址且没有DHCP服务器的网络中,也知道当前子网是什么) .
我实际上实现了一个非常简单的DHCP协议 . PC可以监听Omap广播的数据包,但反之亦然 .