2012-04-06 4 views
1

내 랩톱에서 안드로이드 장치로 udp 패킷을 보내고 싶지만 간단한 앱을 쓰지만 작동하지 않는다고 생각합니다. 사용 된 포트 (5554)는 문제. 코드 :안드로이드 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 (); else {RecieveText.setText("not connected");} } }

답변

0

} 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");}    

가 나는 ... 어떤 방법이 시도 .... 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(); 
    } 

이 /// 보내기, 모든 네트워킹 작업이 비동기 작업 내부로 더 염두에 두어야

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 
} 
관련 문제