2012-04-06 150 views
1

我想從我的筆記本電腦發送一個udp數據包到android設備,我寫了一個簡單的應用程序,但它不工作,我認爲我已經使用的端口(5554)是問題。 代碼:Android的udp端口

`私人無效runUdpServer()

EditText RecieveText = (EditText) findViewById(R.id.editText1); 
    EditText check = (EditText) findViewById(R.id.editText2); 
    String lText; 
    byte[] lMsg = new byte[MAX_UDP_DATAGRAM_LEN]; 
    DatagramPacket dp = new DatagramPacket(lMsg, lMsg.length); 
    DatagramSocket ds = null; 
    RecieveText.setText("try1"); 
    try { 

RecieveText.setText("try2"); ds = new DatagramSocket(UDP_SERVER_PORT); // i think the problem is here
//disable timeout for testing
if (ds != null){RecieveText.setText("connected");}
否則{RecieveText.setText( 「未連接」);}

 RecieveText.setText("try"); 

ds.receive(dp); lText = new String(lMsg, 0, dp.getLength()); Log.i("UDP packet received", lText); RecieveText.setText(lText); check.setText("port opened"); } catch (SocketException e) {`` check.setText("SocketException"); e.printStackTrace( );

} catch (IOException e) { 

     e.printStackTrace(); 
     check.setText("port didn't open"); 

    } finally { 
     if (ds != null) { 
      ds.close(); 
      RecieveText.setText("not connected1"); 
     } 
     else {RecieveText.setText("not connected1");} 
    } 
    check.setText("end"); 
    if (ds != null){RecieveText.setText("connected");}    

else {RecieveText.setText("not connected");} } }

回答

0

我不認爲這是一個港口的問題...打印錯誤日誌有faillure一個更好的想法....任何方式試試這個...不檢查任何錯字....也請記住,任何網絡任務是更好地成爲一個異步任務裏......

int port =1855; ///any port that you want > 1024 
    DatagramSocket socket = null; 
    try { 
     socket = new DatagramSocket(port); 
    } catch (SocketException e) { 
     e.printStackTrace(); 
    } 
    try { 
     socket.setBroadcast(true); 
    } catch (SocketException e) { 
     e.printStackTrace(); 
    } 


    //////send socket 
    int eport = 1616; 
    InetAddress eip = null; 
    try { 
     eip = InetAddress.getByName("192.168.1.1"); ////SERVER IP ADDRESS 
    } catch (UnknownHostException e) { 
     e.printStackTrace(); 
    } 


    DatagramSocket esocket = null; 
    try { 
     esocket = new DatagramSocket(eport); 
    } catch (SocketException e) { 
     e.printStackTrace(); 
    } 

/// SENDING

byte[] send= new byte[60*1024]; 
    DatagramPacket send_packet = new DatagramPacket(send, send.length); 


    try { 
     socket.send(send_packet); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

//////開始收到 while(true) {

 byte[] message = new byte[60*1024]; 
     DatagramPacket recv_packet = new DatagramPacket(message, message.length); 


     try { 
      socket.receive(recv_packet); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    ///Do something whit recv_packet 
}