2011-03-10 2 views
1

LAN에서 "Base"라는 컴퓨터를 찾고 있는데 그러나 찾을 수 없으며 다시 돌아 오는 것은 ISP의 주소입니다 (따라서 인터넷 액세스가 제대로 작동 함). 반환 값은 "Base/81.200.64.50"입니다. 기본적으로 이름을 찾을 수 없습니다. 에뮬레이터를 사용하고 있습니다. 내가 사용하고있는 코드는 Windows에서 실행되는 Java 코드의 복사본이며 제대로 작동합니다 - LAN 주소를 반환합니다. 나는 무엇을 놓치고 있는가 ???InetAddress.getByName이 작동하지 않습니다.

코드는 다음과 같습니다

InetAddress address = InetAddress.getByName(Constants.serverNameStr); 

확인 - 문제는 DNS 조회 것으로 보인다. "Base"를 "www.google.com"으로 바꾸면 Google이 74.125.230.145가됩니다. 에뮬레이터가 로컬 라우터 DNS를 사용하여 이름을 확인할 수없는 것으로 보입니다. 에뮬레이터에서 설정을 조정했지만 시도하지 않았습니다. 아이디어가 있으십니까?


또한 에뮬레이터의 디버그 구성에 LAN 라우터의 DNS를 입력 해 보았습니다. 없음 운없는

답변

0

내가 InetAddress.getByName()에서 유용한 정보를 얻을 수 없다는와 유사한 문제가 있습니다,하지만 난 유용 할 수있는 몇 가지 알아 않았다

  1. 을 ISP에서 DNS를 사용하고 있다면 (아마도) ISP가 요청한 호스트를 찾을 수 없을 때 ISP가 자신의 웹 사이트 중 하나에 대한 IP 주소를 제공하고있을 수 있습니다. 예를 들어 Comcast는 호스트를 찾을 수없는 경우 실제 웹 페이지의 IP 주소를 반환합니다. 이 사실을 알고있는 대부분의 사람들은이 동작을 원하지 않으며 홈 라우터의 DNS 주소를 Google의 DNS 서버를 가리 키도록 변경하여 문제를 해결할 수 있습니다. 8.8.8.8 및 8.8.4.4를 사용하십시오 (기본 및 보조 DNS 서버용). Google DNS 서버는 일반적으로 더 빠르고 안전합니다. 라우터의 DNS 서버를 변경 한 후에 InetAddress.getByName()은 찾을 수없는 호스트를 요청할 때 UnknownHostException을 throw합니다.

  2. 홈 라우터에 연결된 장치 목록에 로컬 컴퓨터 이름이 표시되면 InetAddress.getByName()에 대한 인수로 호스트 이름에 ".local"을 추가해야 할 수 있습니다. 예를 들어 Mac 랩톱의 호스트 이름은 ".local"로 끝나기도하지만 라우터 테이블은 사용자에게 표시하지 않습니다. (적어도 내 넷기어 라우터는 호스트 이름의 ".local의"일부가 표시되지 않습니다.) 내가 InetAddress.getByName 내 문제는() 것을 명확히해야한다

+0

에서만 특정 장치의 IP 주소를 얻기로 로컬 LAN 다른 Mac 랩톱에서 Mac 노트북의 IP 주소를 얻을 수는 있지만 라우터 테이블에서 볼 수있는 장치의 IP 주소 (Wi-Fi를 실행하는 Spykee 로봇)를 가져올 수 없습니다. –

+0

내 Mac 노트북의 로컬 IP 주소를 Android 휴대 전화에서 가져올 수도 없습니다. –

+0

고마워요. –

관련 문제