2013-02-20 1 views
0

나는 TCP 클라이언트를 구현했으며, 지금까지는 원격 서버에 연결하려고 시도해도 괜찮습니다. 해당 서버가 로컬 Wi-Fi 네트워크에 연결되어있는 경우 항상왜 원격 서버에 연결할 수는 있지만 로컬 네트워크에서는 서버에 연결할 수 없습니까?

02-20 14:09:04.400: W/System.err(29562): java.net.SocketException: failed to connect to /xxx.xxx.xxx.xxx (port xyz) after 5000ms: isConnected failed: EHOSTUNREACH (No route to host) 

하지만 !! LOCAL 서버에서 내 안드로이드 장치를 핑 (ping)하면 ping이 실행 된 후 장치가 내 로컬 서버에 연결됩니다.

이 동작에 대해 알려진 이유는 무엇입니까? 나는 해결책을 찾기 시작할 곳이 없다는 단서가 없습니다.

답변

2

장치가 서버의 위치를 ​​알지 못하도록 로컬 네트워크를 아직 검색하지 않았습니다. 대답은 다음과 같습니다 : "호스트 경로 없음"

먼저 MAC 테이블을 업데이트하기 위해 네트워크를 검색하십시오. 일반적으로 MAC이 이미 ARP 테이블에 알려져 있는지 확인할 수 있습니다 (ARP 테이블에서). 그렇지 않은 경우 ARP 요청을 먼저 수행하십시오.

서버에서 처음 ping 할 때 작동하는 이유 : MAC은 모바일 장치에서 (ARP 테이블 또는 MAC 테이블에서) 알 수 있습니다.

+0

답변을 주셔서 감사합니다. 저처럼 네트워크 멍청한 사람들에게는 완벽하게 합리적으로 들립니다. 네트워크 서비스 검색 사용 http://developer.android.com/training/connect-devices-wirelessly/nsd.html#discover 이동 방법은 무엇입니까? –

+0

설명에 따르면 네트워크에서 브로드 캐스트하는 서비스를 청취합니다. 방송이 무엇인지 알고 싶다면 괜찮습니다. 다음은 andriod를위한 소켓 프로그래밍 튜토리얼입니다 : http://www.edumobile.org/android/android-development/socket-programming/ – Bulki

관련 문제