1. 程式人生 > >android UDP通信

android UDP通信

base 服務 ring sock href 數組 += rac word

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通信