2012-03-21 4 views
0

getaddrinfo()를 사용하여 Windows 작업 그룹의 PC 호스트 이름을 LAN의 해당 PC에 대한 IPV4 주소로 변환하는 응용 프로그램이 있습니다. (참고로, 코드가 실행되는 PC의 주소를 얻는 것은 아닙니다. 즉, LAN상의 다른 PC의 주소를 의미합니다!) 이것은 현장 에서뿐만 아니라 실험실에서 오랫동안 사용되어 왔지만 이제는 비정상적으로 작동하는 Windows 7 (32 비트) PC가 있습니다. 이 PC의 호스트 이름은 "elbow"입니다.getaddrinfo()는 원격 호스트에 대해 127.0.0.1을 반환합니다.

내가 내 LAN에있는 모든 PC에이 샘플 코드를 실행하고 호스트 이름으로 "팔꿈치"를 지정하면 http://msdn.microsoft.com/en-us/library/windows/desktop/ms738520%28v=vs.85%29.aspx

에서한다 getaddrinfo()에 대한 Microsoft에서 제공하는 샘플 코드를 컴파일

는한다 getaddrinfo()는 루프백 주소를 반환 올바른 것 대신에 127.0.0.1 (192.168.1.110). 그러나 다른 호스트 이름을 지정하면 getaddrinfo()는 올바른 주소를 반환합니다!

과거 "팔꿈치"의 일부 지점에서이 동작이 나타나지 않았으므로 해당 PC에 대한 무언가가 변경되어이 동작이 발생했습니다. 내가 생각했을 때이 문제가 발생하지 않았지만 변경되지 않은 지점으로 PC 디스크 이미지를 복원하려고했습니다. PC가 유선 또는 무선으로 LAN에 연결되어 있는지 여부도 차이가 없습니다. LAN상의 모든 PC에서 DHCP를 사용할 수 있습니다. 이 동작은 모든 PC, 라우터 및 스위치의 전원이 완전히 꺼진 경우에도 지속됩니다.

+0

잘못된 답변입니다. 나는 당신이이 질문에 대해 다른 어떤 활동도하지 않았 음을 압니다. 그것은 정말로 수수께끼입니다. 행운을 빕니다! –

+0

매우 이상합니다! 그리고 그것은 단방향입니다. 이상한 PC는 다른 모든 PC에 대해 올바른 IP를 얻는 데 아무런 문제가 없습니다. IP를 보이지 않게 만드는 보안 설정이있는 것처럼 보입니다. 전에 그런 설정을 찾았지만, 알다시피, 나는 다시 한번 생각할 것입니다. – pnswdv

답변

0

답으로이를 업데이트하고 싶습니다. 방안의 코끼리가 ISP의 DNS였습니다. 내 서브넷이 ISP의 DNS에서 격리되었다는 잘못된 인상을 받았지만 그렇지 않았습니다. 어떤 이유로 든 그들의 DNS는 호스트 이름 "elbow"에 대해 127.0.0.1을 반환하지만, 다른 이름으로 변경하자마자 문제가 갑자기 나타납니다! 나는 또한 동일한 문제가있는 다른 PC를 밝혀 내고 그것을 이름을 바꿔도 역시 수정되었다. 두 PC의 공통점은 OS 리로드를 거쳤지만 OS 재로드 후에도 문제가 분명 해지지 않았다는 것입니다.

1

비슷한 문제가 발생하여 다른 누군가가이 스레드를 발견했을 경우를 대비하여 게시하고 싶습니다.

고객 설치 컴퓨터로 우리 편에서 같은 일이 발생했습니다. 우리는 고객이 127.0.0.1을 pc의 이름과 연결하도록 호스트 파일을 변경 한 것을 발견했습니다 ... getaddrinfo를 사용하여 별도의 프로그램이 실패한 특정 서브 네트워크를 찾았습니다 ... 그들은이 기능을 사용하기 위해 일시적으로 컴퓨터의 이름을 바꾸었지만 호스트 파일을 수정했을 수 있습니다.

해당 Windows 7 컴퓨터의 hosts 파일은/windows/system32/drivers/etc에 있습니다.