与WEB SERVER建立SOCKET连接后,发送"GET /index.htm \r\n",则可以接收到WEB SERVER传回的网页代码,但是却得不到WEB SERVER的回应消息比如:HTTP/1.1 200 OK或者是HTTP/1.1 404 NOT FOUND等,我想应该是所发送的GET命令不太对,请高手帮忙写一条正确的GET命令,只要能得到WEB SERVER的回应消息就行,在焦急的等待您的帮助,谢谢!!!

解决方案 »

  1.   

    HTTP/1.0请求消息的格式如下:
    请求消息=请求行(通用信息|请求头|实体头)CRLF[实体内容]
    请求行=方法 请求URL HTTP版本号 CRLF
    方法=GET|HEAD|POST|扩展方法
    URL = 协议名称+宿主名+目录与文件名
      

  2.   

    Get/HTTP/1.1
    Accept: */*
    Accept_Language: en_ch
    Accept_Encoding:gzip,deflate
    User_Agent:Mozilla/4.0
    Host:
    Connection:Keep_Alive
      

  3.   

    不行啊,什么都返回不了,RECV函数一直在等待
      

  4.   

    每个后面都加个\r\n
    然后在头最后加个\r\n
    最简单的如下.
    GET /index.htm \r\n\r\n
    取返回码在返回的第一行就是.
      

  5.   

    快来帮帮我吧,做个测试程序也可以啊,我的E-MAIL:[email protected],分还可以再加,谢谢!!!
      

  6.   

    use sniffer pro you can capture data about it.this is an example:
    //liuyanSql.pl?nId=5696055&csId=62869&cName=%d5%c2%cc%ce
    char szHeadI[] = 
    "GET http://www.5460.net/txl/liuyan/liuyanSql.pl?nId=%d";char szHeadII[] =
    "&csId=688939&cName=%d5%c2%cc%ce HTTP/1.1\r\n"
    "Accept: */*\r\n"
    "Referer: http://www.5460.net/txl/login/login.pl\r\n"
    "Accept-Language: zh-cn\r\n"
    "Accept-Encoding: gzip, deflate\r\n"
    "User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)\r\n"
    "Host: www.5460.net\r\n"
    "Connection: Keep-Alive\r\n"
    #ifdef PROXY_VERSION
    "Proxy-Authorization: Basic eG9femp1OmJvYm8xODEzMTY=\r\n"
    #endif
    "\r\n";
    //"Cookie: nId=2173606; pswd=wither\r\n\r\n";char msg[4000];
    int main(int argc, char* argv[])
    {
    SockInit();
    int skt;
    int len;
    struct sockaddr_in peer;
    memset(&peer, 0, sizeof(peer));
    peer.sin_family = AF_INET;
    #ifdef PROXY_VERSION
    peer.sin_port = htons(80);
    peer.sin_addr.s_addr = inet_addr("10.21.41.16");
    #else
    peer.sin_port = htons(80);
    peer.sin_addr.s_addr = inet_addr("61.137.93.108");
    #endif char buff[1024*32];
    {
    int nId = arID[i];
    skt = socket(AF_INET, SOCK_STREAM, 0);
    len = connect(skt, (struct sockaddr *)&peer, sizeof(peer));
    if(len != 0)
    {
    closesocket(skt);
    continue;
    }

    sprintf(msg, szHeadI, nId);
    strcat(msg, szHeadII); len = send(skt, msg, sizeof(msg)-1, 0);
    if(len <= 0)
    {
    closesocket(skt);
    continue;
    } int total = 0; for(;;)
    {
    fd_set fds;
    FD_ZERO(&fds);
    FD_SET(skt, &fds);
    timeval tv;
    tv.tv_sec = 10;
    tv.tv_usec = 0;
    len = select(0, &fds, NULL, NULL, &tv);
    if(len <= 0)
    break;
    len = recv(skt,buff, sizeof(buff), 0);
    buff[len] = '\0';
    printf("%s", buff);

    if(len <= 0)
    break; total += len;

    }
    printf("%d recv: %d\n", nId, total);
                   closesocket(skt);
    Sleep(500);
    }
    WSACleanup();
    return 0;
    }