与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的回应消息就行,在焦急的等待您的帮助,谢谢!!!
调试欢乐多
请求消息=请求行(通用信息|请求头|实体头)CRLF[实体内容]
请求行=方法 请求URL HTTP版本号 CRLF
方法=GET|HEAD|POST|扩展方法
URL = 协议名称+宿主名+目录与文件名
Accept: */*
Accept_Language: en_ch
Accept_Encoding:gzip,deflate
User_Agent:Mozilla/4.0
Host:
Connection:Keep_Alive
然后在头最后加个\r\n
最简单的如下.
GET /index.htm \r\n\r\n
取返回码在返回的第一行就是.
//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;
}