2013-10-15 6 views
0

Android 장치의 작은 Java 코드에서 UDP 서버에 연결하려고합니다. 집에 Wi-Fi 인터넷에 연결하면 서버에 접속하여 패킷에 응답 한 다음 데이터를 수신합니다.udp 패킷이 장치로 돌아 가지 않음

그러나 모바일 네트워크에 연결되어있을 때 같은 프로그램이 실행되면 패킷은 서버에 이되지만 서버 응답 패킷은 손실됩니다. 또한 휴대 전화의 이동 통신사가 들어오는 UDP 트래픽이나 그와 유사한 것을 차단하겠다고 말했지만 이전 테스트 대신 내 홈 서버에 액세스하여 테스트를 시도했으며 UDP 패킷이 다시 돌아 왔습니다!

모바일 네트워크는 UDP 패킷을 아무런 문제없이 보내지 만 일부 IP 주소 인 은 응답 패킷을 삭제합니다. 내가 놓친 게 있니? 이 문제를 방지하기 위해 사용해야하는 일반적인 UDP 포트가 있습니까? 그리고 대중적인 UDP 응용 프로그램에서 이러한 문제가 발생하지 않는 이유는 무엇입니까?

답변

1

귀하가 거주하는 이동 통신사 또는 국가를 식별하지 못했습니다. 하지만 많은 모바일 네트워크는 근본 원인이 될 수있는 carrier-grade-NAT (이중 NAT 연결)을 구현합니다.

사용중인 프로토콜에 대해 설명하지 않았습니다. 그러나 UDP 프로토콜이 클라이언트와 서버간에 안정적으로 작동하는 방식은 클라이언트가 로컬 포트를 프로토콜 내에서 다시 응답하도록 지정하지 않는 것입니다. 오히려 UDP 서버는 소켓 API가 패킷을 보낸 주소를 사용하여 응답합니다. UDP 클라이언트는 메시지를 서버로 보낸 동일한 포트와 소켓에서 수신 대기합니다.