1

Webページのコンテンツをバッファに入れる単純な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は、メインから渡されます。ここでわかるように:

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

printf("\n%d", GetLastError());行のすぐ下で実行するとエラーコード「10047」が表示されます。connect(sock, (struct sockaddr*)&sa, sizeof(sa));マイクロソフトによると、このコードは「指定されたファミリのアドレスはこのソケットでは使用できません」を意味するため、ここから何をすべきか完全に迷っています。

4

1 に答える 1

2

設定しなかったsin_familyため、に設定されてAF_UNSPECいます( 0-initialized であるためsa)。接続する前に、次のことを試してください。

sa.sin_family = AF_INET;
于 2012-08-15T17:51:04.070 に答える