標籤:nts override int 伺服器 android art length add data
Android UDP通訊很簡單的,調用下面這個方法就可以實現用戶端和服務端的UDP通訊,
只需要把要發給伺服器的資料轉成一個byte數組格式傳進去就行了。
/**用戶端向伺服器端發送UDP資料*/public static void sendUdpData(final byte[] bytesToSend) { new Thread(){ @Override public void run() { try{ //IP是伺服器位址 InetAddress serverAddress = InetAddress.getByName(IP); //PORT是伺服器連接埠號碼 int serverPort = PORT; DatagramSocket socket = new DatagramSocket(); socket.setSoTimeout(8000); //sendPacket發送的資料包 DatagramPacket sendPacket = new DatagramPacket(bytesToSend,bytesToSend.length,serverAddress,serverPort); //receivePacket返回的資料包 DatagramPacket receivePacket = new DatagramPacket(new byte[bytesToSend.length],bytesToSend.length); int tries = 0; boolean receivedResponse = false; do{ socket.send(sendPacket); try{ socket.receive(receivePacket); if(!receivePacket.getAddress().equals(serverAddress)){ throw new IOException("接收到未知來源的包"); } receivedResponse = true; }catch(InterruptedIOException e){ tries +=1; Log.i("TAG","Received:"+"Time out,"+(5-tries)); } }while((!receivedResponse)&&(tries > 5)); if(receivedResponse){ //在這裡可以拿到伺服器返回的資料 String receiveData=new String(receivePacket.getData()); Log.i("TAG","返回資料:"+receiveData); }else{ Log.i("TAG","NO response -- giving up"); } socket.close(); }catch (Exception e){ e.printStackTrace(); } } }.start();}
android UDP通訊