2012-04-06 152 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 
}