1

我有 2 个盒子: - 一个嵌入式设备(带有 linux 的 ARM Omap),我将其称为“ Omap ”。- PC(可以是 Windows 或 linux)。

方案 1

两个盒子都在同一个网络中(例如:我的办公室)。
Omap 从 DHCP 服务器获取其地址(例如:192.168.10.110)。PC 始终具有相同的地址(例如 192.168.10.104)。
我可以在任何端口上成功交换 UDP 广播数据包。
成功。


方案 2

这两个盒子位于没有 DHCP 服务器的网络
PC 有一个静态 IP 地址(例如:10.10.10.20)。
Omap 启动,寻找 DHCP 服务器,但没有找到,并且处于我所说的“错误 IP 地址”状态。 现在...从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 套接字。具体来说,我采用了多播示例并将它们更改为广播。

任何帮助表示赞赏。

谢谢,贝内代托

PS:一些澄清。

Omap 设备是嵌入式设备,我的目标是客户不必在现场设置其 IP 地址。这就是为什么我要与 PC 交换广播数据包,以从我在 PC 上运行的其他软件获取“好的”IP 地址(即使在具有静态 IP 地址且没有 DHCP 服务器的网络中,它也知道当前子网是什么)。

基本上我实现了一个非常简单的 DHCP 协议。PC 可以收听 Omap 广播的数据包,反之则不行。

4

2 回答 2

0

一些想法...

1) ifconfig eth0 -- 接口是否启动,是否有 IP 地址、合适的网络掩码等?

2) 路由——配置是否正确?(Netstat -r 或路由)(如果 IP 地址位于不同的未路由子网上,这可能是一个问题,具体取决于网络掩码。)

3) 防火墙——我无法告诉你我遇到了多少次防火墙问题。验证它没有在那里停止。

4) 直接在各自的系统上尝试 tcpdump——它显示了什么?什么是通过?

5) 你能从一个系统ping到另一个系统吗?(ICMP 的规则可能与 UDP 不同。)

(我敢打赌,接口关闭,网络掩码阻止了不同的子网,或者首先没有到主机的路由问题。)

于 2010-06-11T03:48:24.843 回答
0

如果您使用 设置 IP 地址ifconfig,这可能还不够。通常,您还必须配置路由表,这通常包括添加两条路由:一条表示“此网络连接在eth0”,一条表示“这是默认网关”。(后者不是严格要求的。)

“网络无法访问” - 我假设您尝试从 OMap ping PC?如果您的 PC 是192.something.something.something,并且您的“OMap”有路由表您的评论:

Destination  Gateway  Genmask    Flags  MSS  Window  irtt  Iface
10.0.0.0     *        255.0.0.0  U      0    0       0     eth0

...然后它将无法发送。该路由表仅在您尝试将内容发送到时才起作用10.something:这是它知道的唯一路由。如果您没有运行10.0.0.0/8网络,则该路由是错误的。

如果您想这样做,请查找有关路由表、IP 地址等的一些材料。虽然,如果你只想让普通人“插入”——他们将运行 DHCP——那有什么问题呢?您不能在没有某种形式的中介的情况下仅在网络上选择一个 IP 地址:要么是人工中介,要么手动设置它,或者您使用 DHCP 服务器之类的东西。否则,您可能会选择其他人的地址。此外,您需要知道您是在10.0.0.0/8网络、192.168.0-255.0/8网络、其他 LAN 还是 Internet 上……DHCP 为您做了什么……

于 2010-06-11T23:33:17.320 回答