最近接手一個項目,機器會1秒鐘返回一次數據,手機端UDP接受數據,在很多測試機上都可以成功接收,無奈客戶的出品方是moto,偏偏就moto不能接受還一直拋出異常,在網上查閱資料,都說是阻塞的問題,繼續接收就好了,但顯然不是這麼簡單,繼續接收還是接收不到數據。
在百度Android接受UDP數據的時候,覺得應該是手機系統的問題。經過查詢,應該是系統禁止了接受廣播,以便省電等,
解決方法如下:
WifiManager manager = (WifiManager) this .getSystemService(Context.WIFI_SERVICE); WifiManager.MulticastLock lock= manager.createMulticastLock("UdpRec");
在接受的時候,調用
lock.acquire();
異常還是同樣的拋出,但能成功接收到數據報:
可我的代碼:
終於是解決了這個問題