2010-05-12 5 views
1

필자는 안드로이드 장치에서 간단한 udp 서버를 구현합니다. (sdk 1.5) 전화에서 로컬 클라이언트를 실행하면 내 서버로 트리거가 전송됩니다.UDP 서버가 외부에서 전화를받지 못합니다.

하지만 외부 서버에서 전화로 udp 통화를 시도하면 작동하지 않습니다. 이미 외부 서버가 방화벽에 의해 차단되지 않았으며 내 전화가 수신중인 올바른 포트로 UDP 트리거를 보내고 있음을 확인하십시오.

나는 전화로 natstat를 사용했고, 전화가 실제로 로컬 IP와 포트를 듣고 있는지 확인했다. 내가 그것을 잘 작동 UDP 트리거를 전송 로컬 클라이언트 (별도 스레드)와 그것을 시도하지만, 때 때 (장치에서) 내가 말했듯이 너무

// server will listen to one client 
    try 
    { 
     Thread udpServerThread = new Thread() 
     { 

      @Override 
      public void run() 
      { 
       try 
       { 
       // Retrieve the ServerName 

          InetAddress serverAddr = InetAddress 
          .getByName("localhost"); 

        Log.d("UDP", "S: Connecting..."); 
        // Create new UDP-Socket 
        socket = new DatagramSocket(SERVERPORT,serverAddr); 






        byte[] buf = new byte[17]; 


        // * Prepare a UDP-Packet that can contain the data we 
        // * want to receive 

        DatagramPacket packet = new DatagramPacket(buf, 
          buf.length); 
        Log.d("UDP", "S: Receiving..."); 

       // wait to Receive the UDP-Packet 
        socket.receive(packet); 
        Log.d("UDP", "S: Received: '" 
          + new String(packet.getData()) + "'"); 


        acceptedMsg=new String(packet.getData()); 


        notifyService(acceptedMsg); 



        Log.d("UDP", "S: Done."); 
       } catch (Exception e) 
       { 
        Log.e("UDP", "S: Error", e); 
       } 


      } 

     }; 
     udpServerThread.start(); 

    } 

    catch (Exception E) 
    { 
    Log.e("r",E.getMessage()) ; 
    } 

, 여기

서버의 내 코드입니다 나는이 클라이언트 구현을 취하여 UDP가 전송 된 후 외부 실제 서버 에 넣었습니다. 전화가 응답하지 않습니다.

어떤 아이디어가 있습니까?

덕분에,

선.

답변

1

InetAddress.getByName("localhost")을 호출하면 루프백 주소 (127.0.0.1)가 표시된다고 가정합니다.

socket = new DatagramSocket(SERVERPORT); 
+0

감사 :

는 당신이 실제로하고 싶은 당신은 분명히 그래서처럼 DatagramSocket을 작성하여 달성 할 수 INADDR_ANY에 바인드 된 소켓을 가지고하는 것입니다! 그것은 효과가 있었지만 여전히 INADDR_ANY가 의미하는 바를 이해하지 못합니까? – rayman

+0

INADDR_ANY는 IPv4 와일드 카드 주소이며 소켓을 INADDR_ANY에 바인딩하면 시스템의 모든 주소에 바인딩하는 것과 같습니다. – Hasturkun

관련 문제