2012-08-15 79 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