首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android WiFi 熱點下 UDP 廣播發送失敗:ENETUNREACH 路由故障排查

     編輯:程式設計綜合問答

現象

同一局域網路由器下 UDP 廣播收發正常;手機開啟熱點、另一台連接熱點後,發送端拋出 java.net.SocketException: sendto failed: ENETUNREACH (Network is unreachable),但雙向 ping 通。

原因分析

  • Android 熱點模式下,AP 隔離或內核路由表未將廣播封包(目標 255.255.255.255 或子網廣播)轉發到 wlan0 接口。
  • 部分廠商 ROM 限制熱點客戶端之間的二層通信,導致鏈路層廣播不達到。

排查步驟

  1. 發送端/接收端分別執行 cat /proc/net/route 查看默認路由、廣播路由是否指向熱點接口(通常 wlan0)。
  2. 嘗試指定發送接口:socket.setInterface(NetworkInterface.getByName("wlan0"))(需 root 或系統簽名)。
  3. 改用**組播**或**單播輪詢**:發送端維護在線設備 IP 列表,逐個 DatagramPacket 發送。
  4. 若必須廣播,考慮在熱點端運行一個中繼服務,將單播轉發為廣播。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved