2011-09-28 2 views
0

안드로이드 (소켓, HttpClient 또는 HttpUrlConnection 아닙니다)에서 소켓 프로그래밍을 조금하고 있습니다. 포트 443에서 내 Tomcat 서버에 연결할 수없는 매우 이상한 문제가 발생합니다. 괜찮습니다. 내 코드는 매우 간단합니다.이 모든 것이 있습니다.소켓 8443에 연결할 수 있지만 443에 연결하지 않습니까?

public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    try{ 
     Socket s = new Socket(); 
     InetSocketAddress addr = new InetSocketAddress("10.1.1.1", 443); 
     s.setKeepAlive(true); 
     s.setSoTimeout(300000); 
     s.connect(addr); 
    }catch{<my catch statement>} 
} 

그게 전부입니다. 프로그램을 내 장치에 푸시하고 실행하지만 항상 SocketException: Operation Timed Out 오류가 발생합니다. 그러나 서버 측과 코드면 모두에서 포트를 8443으로 전환하면 장치가 아무 문제없이 연결할 수 있습니다. 나는 server.xml 파일에서 번호를 변경하는 것 이상을하고있다.

내 컴퓨터의 에뮬레이터에서 정확히 똑같은 것을 실행하면 몇 가지 흥미로운 점이 있습니다. 정상적으로 작동합니다. 또한 장치와 컴퓨터 사이의 연결에 wireshark를 실행하여 ICMP Destination Unreachable: Destination Port Unreachable을 계속 던지는 것처럼 보입니다. 장치에서 핑 (ping) 할 수있을 때 어떻게 될 수 있습니까?

나는 이것이 serverfault에 더 적절하지만 FAQ를 통해 보았을 때 개인용 서버 문제보다는 전문적인 문제에 더 적합하게 보였다. 누군가 내 안드로이드 장치가 내 서버의 특정 포트에 연결할 수없는 이유를 알고 있습니까? 그리고 8443 스위치가 갑자기 연결이 작동하도록하는 이유는 무엇입니까?

답변

1

데스크톱 (에뮬레이터)과 서버 사이에 존재하지 않는 Android 장치와 서버 사이에 방화벽이 있습니까?

+0

실제로 있습니다! :) – Otra

관련 문제