2012-12-19 3 views
4

Android 클라이언트 및 Java 서버로 클라이언트/서버 모델을 설정하려고합니다. 연결이 TCP를 통해 이루어졌습니다.Android - Java TCP 연결 NAT 통과

무선 네트워크 (예 : 3g, 4g)에 연결할 때마다 안드로이드 장치가 WIFI에있을 때 모든 코드가 작동하지만 소켓 연결이 거부됩니다.

나는 NAT traversal에 대해 읽었지만, 연결을 허용하기 위해 필요한 단계를 구현할 때 어디에서 시작해야할지 모르겠습니다.

참고 : 내 서버는

+1

자세한 정보가 필요합니다. 인터넷상의 서버가 인터넷에 연결된 다른 사람 (예 : 집 방화벽 뒤에 있지 않음)이라는 의미에서 인터넷에 있습니까? 사설 영역 밖에있는 주소입니까? 안드로이드 장치 (탐색, 일반 TCP 또는 Ping)에서 다른 서버에 연결할 수 있습니까? 어떤 종류의 데이터 계획을 당신의 안드로이드 장치에 가지고 있습니까 (그것이 비 브라우징 데이터 액세스를 다루고 있습니까)? 대답은 없지만 많은 질문이 있습니다. – DrC

+0

그렇습니다. 내 서버가 라우터 뒤에 있으며 포트 포워딩이 모두 처리되었습니다. 나는 무제한의 데이터를 가지고 있으며 나는 브라우징을하지 않기 위해 데이터를 사용할 수있다. –

+1

시험 할 몇 가지 더. WiFi 핫스팟 (예 : 서버와 동일한 서브넷이 아닌)으로 이동하는 경우 작동합니까? 같은 질문이지만, WiFi 핫스팟에서 랩톱을 사용할 수 있습니까? 확인해야 할 추가 사항은 해결책으로 이어질 수 있습니다. – DrC

답변

2

내 생각 엔 당신이 네트워크 관련 문제가있는 정적 IP 주소를 가지고 있습니다. 서버가 라우터 뒤에 있다고 가정하면 서버 소켓은 공용 IP를 직접 바인딩하지 않고 LAN IP에 바인딩해야합니다. 그런 다음 포트 포워딩, 방화벽 규칙 등을 설정하여 인터넷의 모든 사용자가 서버를 볼 수 있도록해야합니다. (다른 네트워크의 온라인 포트 검사기/텔넷 검사는 좋은 테스트입니다)

+0

감사합니다. 포트가 열려 있는지 확인합니다. 하지만 난 다른 서브넷에서 WIFI를 통해 (즉 WAN을 통해) 연결할 수 있어요. 안드로이드 소프트웨어에 문제가있을 수 있습니까? –

+0

하지만 http://www.canyouseeme.org/ 또는 http://www.yougetsignal.com/tools/open-ports/와 같은 도구를 사용하여 인터넷에서 서버 소켓으로 연결을 열 수 있는지 확인할 수 있습니까? ISP에서 할당 한 공용 IP와 서버 소켓에서 수신하는 포트를 입력하십시오. 방화벽과 포트 포워딩을 제외하고, 일부 ISP는 알 수없는 포트로가는 트래픽을 차단한다는 것을 알고 있습니다. – gerrytan

+0

예, 라우터에서 모든 포트 포워딩을 설정했지만 내 서버의 방화벽이 특정 포트의 트래픽을 허용합니다. 나는 단지 문제 해결을해야 할 것 같아. –