只要能获取HTTP HEAD(URL,cookie等)即可。
最好是ATL的。要完整代码。谢谢了

解决方案 »

  1.   

    void GetHTTP(LPCSTR lpServerName, LPCSTR lpFileName)
    {
    //
    // Use inet_addr() to determine if we're dealing with a name
    // or an address
    //
    IN_ADDR iaHost;
    LPHOSTENT lpHostEntry; iaHost.s_addr = inet_addr(lpServerName);
    if (iaHost.s_addr == INADDR_NONE)
    {
    // Wasn't an IP address string, assume it is a name
    lpHostEntry = gethostbyname(lpServerName);
    }
    else
    {
    // It was a valid IP address string
    lpHostEntry = gethostbyaddr((const char *)&iaHost, 
    sizeof(struct in_addr), AF_INET);
    }
    if (lpHostEntry == NULL)
    {
    PRINTERROR("gethostbyname()");
    return;
    }
    //
    // Create a TCP/IP stream socket
    //
    SOCKET Socket; Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (Socket == INVALID_SOCKET)
    {
    PRINTERROR("socket()"); 
    return;
    }
    //
    // Find the port number for the HTTP service on TCP
    //
    LPSERVENT lpServEnt;
    SOCKADDR_IN saServer; lpServEnt = getservbyname("http", "tcp");
    if (lpServEnt == NULL)
    saServer.sin_port = htons(80);
    else
    saServer.sin_port = lpServEnt->s_port;
    //
    // Fill in the rest of the server address structure
    //
    saServer.sin_family = AF_INET;
    saServer.sin_addr = *((LPIN_ADDR)*lpHostEntry->h_addr_list);
    //
    // Connect the socket
    //
    int nRet; nRet = connect(Socket, (LPSOCKADDR)&saServer, sizeof(SOCKADDR_IN));
    if (nRet == SOCKET_ERROR)
    {
    PRINTERROR("connect()");
    closesocket(Socket);
    return;
    }
    //
    // Format the HTTP request
    //
    char szBuffer[1024]; sprintf(szBuffer, "GET %s\n", lpFileName);
    nRet = send(Socket, szBuffer, strlen(szBuffer), 0);
    if (nRet == SOCKET_ERROR)
    {
    PRINTERROR("send()");
    closesocket(Socket);
    return;
    } //
    // Receive the file contents and print to stdout
    //
    while(1)
    {
    // Wait to receive, nRet = NumberOfBytesReceived
    nRet = recv(Socket, szBuffer, sizeof(szBuffer), 0);
    if (nRet == SOCKET_ERROR)
    {
    PRINTERROR("recv()");
    break;
    } fprintf(stderr,"\nrecv() returned %d bytes", nRet); // Did the server close the connection?
    if (nRet == 0)
    break;
    // Write to stdout
            fwrite(szBuffer, nRet, 1, stdout);
    }
    closesocket(Socket);
    }