我试图将一些代码从32位Windows(XP和Server 2003)迁移到64位Windows 7,并且出现了gethostbyname的奇怪问题。在64位Windows上使用gethostbyname问题
我在做这样的事情:
struct hostent *hp;
hp = gethostbyname(host);
,来电后的gethostbyname,指针HP-> h_addr_list是无效的。它有所有正确的数字,但它看起来像一个32位指针不知何故被塞进错误的空间。
例如,我所得到的是
HP-> h_addr_list = 0x0064bdd800000000
如果我手动换第一个和最后半,这样HP-> h_addr_list = 0x000000000064bdd8然后将鼠标指针是否有效,并指向正确的数据。
有时我得到baadf00d而不是零太(即HP-> h_addr_list = 0x0064bdd8baadf00d),
至于我可以告诉大家一切都被链接到winsock的库的正确的64位版本,所以我我不确定可能会导致这种问题。
getaddrinfo()似乎在为我工作,我不确定gethostbyname的问题是什么,它很可能只是一个错误。 – WildCrustacean 2010-01-28 15:04:35