我試圖將一些代碼從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