編輯:關於Android編程
Android UDP 開發中,在接收數據的時候,有的手機無法阻塞???
原因:
不要在主線程中寫相關UDP代碼,將代碼寫到新建線程run函數中。
問題解決代碼示例:
new Thread(){ public void run() { // UDP服務器監聽的端口 Integer port = 8888; // 接收的字節大小,客戶端發送的數據不能超過這個大小 byte[] buf = new byte[1024]; // 建立Socket連接 DatagramSocket datagramSocket = null; if(datagramSocket == null) { try { datagramSocket = new DatagramSocket(null); datagramSocket.setReuseAddress(true); datagramSocket.bind(new InetSocketAddress(port)); } catch (SocketException e) { e.printStackTrace(); } } try { DatagramPacket datagramPacket = new DatagramPacket(buf, buf.length); try { while (isOnResume) { // 准備接收數據 datagramSocket.receive(datagramPacket); String result = new String(datagramPacket.getData() , datagramPacket.getOffset() , datagramPacket.getLength()); Log.e("TAG", result); // Log.e("UDP Demo", datagramPacket.getAddress().getHostAddress().toString() + ":" + result); } } catch (IOException e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } };}.start();
另外代碼10行到23行的寫法也一並解決了bind failed: EADDRINUSE (Address already in use)的錯誤。!!!!
王月星推薦
此前我們用HorizontalScrollView也實現了類似網易選項卡動態滑動效果,詳見 Android選項卡動態滑動效果這篇文章這裡我們用TabLayout來實現這一
本文實例講述了Android獲取手機屏幕大小的方法。分享給大家供大家參考,具體如下:這裡主要用了三個對象TextView ,Button ,以及DisplayMetric
原文地址:http://android.xsoftlab.net/training/transitions/index.html引言Activity所呈現的UI經常會由用
安卓手機重置便攜式熱點密碼方法如何?小編就來演示一下。 開啟手機,進入手機設置界面; 選擇“無線和網絡”; 選擇&