33,311
社区成员
发帖
与我相关
我的任务
分享
#include <cstdio>
#include <iostream>
#include <cstring>
#include <winsock.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main()
{
WSADATA wsaData={0};
SOCKET sock;
struct sockaddr_in addr;
struct hostent *pUrl;
char myurl[]="www.sohu.com";
char host[BUFSIZ],GET[BUFSIZ],*pHost=0;
char header[BUFSIZ]="";
static char text[BUFSIZ];
if(WSAStartup(MAKEWORD(2,2),&wsaData))
{
printf("WSA failed\n");
return 0;
}
for(pHost=myurl;*pHost!='/'&&*pHost!='\0';pHost++);
if(int(pHost-myurl)==strlen(myurl))
{
strcpy(GET,"/");
}
else
{
strcpy(GET,pHost);
}
*pHost='\0';
strcpy(host,myurl);
sock=socket(AF_INET,SOCK_STREAM,0);
pUrl=gethostbyname(host);
addr.sin_family=AF_INET;
addr.sin_addr.s_addr=*((unsigned long*)pUrl->h_addr);
addr.sin_port=htons(80);
strcat(header, "GET ");
strcat(header, GET);
strcat(header, " HTTP/1.1\r\n");
strcat(header, "HOST: ");
strcat(header, host);
strcat(header,"\r\nAccept-language:zh-CN");
strcat(header, "\r\nConnection: Close\r\n\r\n");
connect(sock,(SOCKADDR*)&addr,sizeof(addr));
send(sock,header,strlen(header),0);
while(recv(sock,text,BUFSIZ,0)>0)
{
cout<<text;
strnset(text,'\0',BUFSIZ);
}
closesocket(sock);
WSACleanup();
return 0;
}