2012-08-15 98 views
1

所以我真的被困在這裏,只是試圖製作一個簡單的C程序,它將網頁的內容放入緩衝區,但是我遇到了一些問題;考慮以下幾點:套接字錯誤10047

WORD wVersionRequested; 
WSADATA wsaData; 
int err; 

wVersionRequested = MAKEWORD(2, 2); 
err = WSAStartup(wVersionRequested, &wsaData); 
if(err != 0) 
{ 
    printf("could not find a usable winsock.dll"); 
    return NULL; 
} 
if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) 
{ 
    printf("could not find a usable winsock.dll"); 
    WSACleanup(); 
    return NULL; 
} 
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 
struct sockaddr_in sa = { 0 }; 
sa.sin_port = htons(port); 
sa.sin_addr.s_addr = inet_addr(ip); 
connect(sock, (struct sockaddr*)&sa, sizeof(sa)); 

變量ipport,通過從主傳遞。你可以在這裏看到:

readsite("http://www.pagetutor.com/html_tutor/index.html", "68.71.137.60", 80); 

出現錯誤代碼「10047」直接從線下connect(sock, (struct sockaddr*)&sa, sizeof(sa));執行printf("\n%d", GetLastError());並根據微軟這個代碼的意思是「在指定的家庭地址無法與此套接字一起使用」,所以我完全迷失在這裏做什麼。

+1

爲什麼不使用libcURL呢? – 2012-08-15 17:51:14

回答

2

您沒有設置sin_family因此它被設置爲AF_UNSPEC(因爲您初始化爲0,初始化爲sa)。在連接之前,請嘗試:

sa.sin_family = AF_INET; 
+0

啊,這是否謝謝你! – 2012-08-15 17:55:48