android upd广播 sendto failed: ENETUNRE

手机间发送和接受udp广播
在手机都连的是路由是是没问题的 但是在手机用自带的wifi热点连接时
发送端发送udp广播时会抛出以下错误
java.net.SocketException: sendto failed: ENETUNREACH (Network is unreachable)
at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:541)
at libcore.io.IoBridge.sendto(IoBridge.java:510)
at java.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java:182)
at java.net.DatagramSocket.send(DatagramSocket.java:284)
at com.example.udp_sreverdemo.SendThead.run(SendThead.java:97)
Caused by: libcore.io.ErrnoException: sendto failed: ENETUNREACH (Network is unreachable)
at libcore.io.Posix.sendtoBytes(Native Method)
at libcore.io.Posix.sendto(Posix.java:146)
at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:177)
at libcore.io.IoBridge.sendto(IoBridge.java:508)

注 : 在手机用自带的wifi热点连接时 是可以ping通的

2个回答

路由配置问题?检查一下wifi热点模式下client和server的路由表吧。

使用UDP协议进行信息的传输之前不需要建议连接。换句话说就是客户端向服务器发送信息,客户端只需要给出服务器的ip地址和端口号,然后将信息封装到一个待发送的报文中并且发送出去。至于服务器端是否存在,或者能否收到该报文,客户端根本不用管。
通常我们讨论的udp的程序都是一对一的单播程序。本章将讨论一对多的服务:广播(broadcast)、多播(multicast)。对于广播,网络中的所有主机都会接收一份数据副本。对于多播,消息只是发送到一个多播地址,网络知识将数据分发给哪些表示想要接收发送到该多播地址的数据的主机。总得来说,只有UDP套接字允许广播或多播。

u013235698
Loli_Con 我想问的是 为什么在路由器上就可以udp广播 手机wifi热点就不可以
5 年多之前 回复
立即提问
相关内容推荐