因此,我的确陷入了困境,只是试图创建一个简单的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));

变量ipport从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));时得到错误代码“10047”,根据Microsoft的代码,此代码表示“指定套接字中的地址不能与该套接字一起使用”,因此我完全不知道该怎么做。

最佳答案

您未设置sin_family,因此将其设置为AF_UNSPEC(因为您已将0初始化为sa)。连接之前,请尝试:

sa.sin_family = AF_INET;

09-05 13:37