2014-03-30 82 views
2

這拖累我瘋的getaddrinfo()函數拋出錯誤ñ11003

#undef UNICODE 

#include "stdafx.h" 
#include <WS2tcpip.h> 
#include <WinSock2.h> 
#include <string> 
#pragma comment(lib,"Ws2_32.lib") 

using namespace std; 

int _tmain(int argc, char* argv[]) 
{ 

    WSADATA wsa; 
    int error = WSAStartup(MAKEWORD(2,2),&wsa); 
    if (error != 0) 
    { 
     printf("An error in startup %d\n",WSAGetLastError()); 
     system("pause"); 
    } 

    addrinfo hints, 
     * result = NULL, 
     * ptr = NULL; 
    hints.ai_family = AF_UNSPEC; 
    hints.ai_protocol = IPPROTO_TCP; 
    hints.ai_socktype = SOCK_STREAM; 

    error = getaddrinfo(argv[1],NULL,&hints,&result); 
    if (error != 0) 
    { 
     printf("An error in getaddrinfo %d\n",WSAGetLastError()); 
     system("pause"); 
    } 

    char stringbuffer[2075]; 
    int len = sizeof(stringbuffer); 
    for(ptr = result; ptr->ai_next != NULL; ptr = ptr->ai_next) 
    { 
     if(ptr->ai_family == AF_INET) 
     { 
      printf("Address: %s\n",InetNtop(ptr->ai_family,ptr->ai_addr,stringbuffer,len)); 
     } 
    } 

    return 0; 
} 

的getaddrinfo拋出11003錯誤,我已經比很多互聯網資源的主要有,但我想不出爲什麼的getaddrinfo失敗! 我讀過的Winsock錯誤代碼描述和它說,11003「表示在數據庫查找中出現某種不可恢復的錯誤」,所以 在此先感謝! 編輯: 我問過其他地方,但沒有給我解決,我擋在這一點,作爲第評論中提到我無法前進

+0

也許它是相同的問題:http://stackoverflow.com/questions/9307667/urllib-error-of-google-app-engine-python-errno-11003-getaddrinfo-failed 你測試使用「本地主機「作爲地址? – Sandro

+0

是的,我測試了每個輸入,但它不工作! – Collapsed

+3

你真的不應該留在你的'addrinfo中hints'垃圾。做memset(&提示,0,sizeof提示) – nos

回答

3

memset(&hints, 0, sizeof(hints))

應做的伎倆。

的getaddrinfo()嘗試與設置現有的數據以填滿。垃圾數據混淆了功能。