2012-09-02 4 views
0

Android 앱과 서버간에 UDP 패킷을 계속 보내고 받으려고합니다.Android에서 UDP 패킷을 수신합니다.

이렇게 할 수있는 방법이 있습니까?

현재 네트워킹 코드 (스레드로 실행 중)는 다음과 같습니다. 클라이언트는 3G를 통해 연결됩니다. 포트 구성 클라이언트 측은 1088입니다.

서버는 수신시 패킷을 클라이언트에 반향시킵니다. 서버는 클라이언트에서 패킷을 올바르게 수신하지만 클라이언트는 아무것도 수신하지 않습니다.

InetAddress serverAddr = InetAddress.getByName(SERVERIP); 

Log.d(TAG, "S: Connecting..."); 
DatagramSocket socket = new DatagramSocket(); 
DatagramSocket receive_socket = new DatagramSocket(SERVERPORT, InetAddress.getByName("0.0.0.0")); 

while(running) { 
    DatagramPacket packet_send = new DatagramPacket(msg, msg.length, serverAddr, SERVERPORT); 
    Log.d(TAG, "C: Sending: '" + new String(msg) + "'"); 
    socket.send(packet_send); 

    // Prepare a UDP-Packet that can contain the data we want to receive 
    DatagramPacket packet = new DatagramPacket(buf, buf.length); 
    Log.d(TAG, "S: Receiving..."); 

    // Receive the UDP-Packet 
    receive_socket.receive(packet); 
    Log.d(TAG, "S: Received: '" + new String(packet.getData()) + "'"); 
    synchronized (this) { 
     wait(500); 
    } 
} 

3G 연결이 NATed라고 생각됩니다 (서버가 1088과 다른 포트를보고합니다). 그렇다면이를 극복하기 위해 할 수있는 일이 있습니까? 아니면 코드에 문제가 있습니까?

+0

서버 코드는 Twisted UDP Echo 예제입니다. http://twistedmatrix.com/documents/current/core/howto/udp.html#auto1 – aberaud

+0

서버에서 다음을 인쇄합니다.> 'Hello from Client'from 213.55.xx .xx : 6854 – aberaud

+0

그냥 생각 -하지만 그것은 안드로이드 권한과 관련이 있을까요? – stephendwolff

답변

0

코드가 잘 작동되어 3G 서비스 공급자가 일부 UDP 패킷을 차단하고있었습니다.

관련 문제