Network is unreachable

本文介绍了解决Davinci DM6467平台上UDP服务遇到的“Network is unreachable”错误的过程。通过调整U-BOOT参数bootargs中的固定IP设置,解决了因网关配置错误导致的服务无法正常发送数据的问题。

最近在做Davinci DM6467的应用开发,写了一个UDP服务用于设备搜索。服务可以收到客户端发来的搜索信息,可是发送设备信息给客户端却失败了,一看sendto返回失败,错误信息为“Network is unreachable”。

查询了网上资料,得知是网关设置不正确导致,使用route命令查询网关:

#route
Kernel IP routing table
Destination Gateway     Genmask       Flags Metric Ref Use Iface
192.168.0.0 *           255.255.255.0 U     0      0   0   eth0

深入查询发现是U-BOOT参数bootargs中的固定ip(ip=ip addr : server ip addr : gateway : netmask :: witch netcard : off)设置错误,少写了server ip addr,修正之后route信息如下:

#route
Kernel IP routing table
Destination Gateway     Genmask       Flags Metric Ref Use Iface
192.168.0.0 *           255.255.255.0 U     0      0   0   eth0
default     192.168.0.1 0.0.0.0       UG    0      0   0   eth0

UDP服务也能正常收发了,问题解决。

 

### 开发板网络不可达问题解决方案 当遇到 `SIOCADDRT: Network is unreachable` 或者 `ping: sendto: Network is unreachable` 的错误提示时,这通常是由于缺少默认网关配置或者是网络接口未正确初始化所引起的[^1]。 对于刚刷新完固件的开发板来说,如果设置了静态 IP 地址但是仍然无法访问外部网络,则可能是因为没有指定通往外界的路径即缺省路由。可以通过向系统添加一条指向路由器的默认路由来解决问题: ```bash route add default gw 192.168.1.1 eth0 ``` 这里假设网关地址为 `192.168.1.1` 并且使用的网络接口名为 `eth0`,实际环境中应当替换为具体的网关和接口名称[^2]。 另外一种情况是在使用 VMware 虚拟化环境下的 Ubuntu 主机与物理开发板之间的通信出现问题。此时可以尝试调整 VMware 中的虚拟网络设置以确保两者处于相同子网内,并重启 Ubuntu 上的网络服务使更改生效: #### 修改 VMware 网络配置 - 打开 VMware -> 编辑 -> 虚拟网络编辑器; - 配置适用于当前场景的适配器选项; #### 重载 Ubuntu 网络管理器 ```bash sudo service network-manager restart ``` 完成上述操作之后再次测试连通性应该能够得到改善[^3]。 值得注意的是,除了以上提到的原因之外,还有可能是 DNS 设置不正确导致域名解析失败进而表现为 "network is unreachable" 错误消息。因此建议也检查 `/etc/resolv.conf` 文件中的 nameserver 记录是否指向有效的公共DNS服务器如 Google 提供的服务 (8.8.8.8)[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值