所以我真的被困在这里,只是想制作一个简单的 C 程序,将网页内容放入缓冲区,但我遇到了一些问题;考虑以下几点:
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));
变量ip
和port
是从main 传递过来的。如您所见:
readsite("http://www.pagetutor.com/html_tutor/index.html", "68.71.137.60", 80);
我从 printf("\n%d", GetLastError());
行下方的 connect(sock, (struct sockaddr*) &sa, sizeof(sa));
根据微软的说法,这段代码意味着“指定系列中的地址不能用于此套接字”,所以我完全不知道从这里开始做什么。
最佳答案
您没有设置 sin_family
,所以它被设置为 AF_UNSPEC
(因为您对 sa
进行了 0 初始化)。在连接之前,尝试:
sa.sin_family = AF_INET;
关于c - 套接字错误 10047,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11974389/