일부 코드를 32 비트 Windows (XP 및 Server 2003)에서 64 비트 Windows 7로 마이그레이션하려고하는데 gethostbyname에 이상한 문제가 있습니다.64 비트 Windows에서 gethostbyname 문제
나는 이런 식으로 뭔가를하고 있어요 :
struct hostent *hp;
hp = gethostbyname(host);
를 호출 한 후, 포인터 HP-> h_addr_list가 잘못되었습니다으로 gethostbyname. 그것은 모든 올바른 숫자를 가지고 있지만 32 비트 포인터가 어떻게 든 잘못된 공간에 채워진 것처럼 보입니다. 예를 들어
, 내가 무엇을 얻을
HP-> h_addr_list = 0x0064bdd800000000
입니다 HP-> h_addr_list = 0x000000000064bdd8 다음 포인터가 유효하고 포인트 있도록 내가 수동으로 첫 번째와 마지막 절반을 교체하는 경우 정확한 데이터.
는 가끔, 대신 너무 제로 (예 : HP-> h_addr_list = 0x0064bdd8baadf00d)의 baadf00d받을
지금까지 내가 모든 것이 윈속 라이브러리의 올바른 64 비트 버전에 연결되어 말할 수있는, 그래서 '으로 이런 종류의 문제를 일으키는 원인이 될지 모르겠습니다.
getaddrinfo()가 나를 위해 작동하는 것처럼 보입니다. 문제가 gethostbyname에 무엇이 있는지 잘 모르겠습니다. 버그가 될 수 있습니다. – WildCrustacean