#include <stdio.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define BUF_SIZE 1024
using namespace std;
int main(int argc, char **argv)
{
if(2 > argc)
{
exit(1);
}
int sfd, res, len;
struct sockaddr_in sin;
char buf[BUF_SIZE], req[1024];
string content;
sfd = socket(AF_INET, SOCK_STREAM, 0);
if(-1 == sfd)
{
exit(2);
}
memset(&sin, 0, sizeof(sockaddr_in));
sin.sin_family = AF_INET;
sin.sin_port = htons(80);
sin.sin_addr.s_addr = inet_addr(argv[1]);
res = connect(sfd, (sockaddr*)&sin, sizeof(sockaddr_in));
if(-1 == res)
{
exit(3);
}
sprintf(req, "GET / HTTP/1.1\r\nHost: %s\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: zh-cn,zh;q=0.5\r\nAccept-Encoding: gzip,deflate\r\nAccept-Charset: GB2312,utf-8;q=0.7,*;q=0.7\r\nKeep-Alive: 115\r\nConnection: close\r\n\r\n", argv[2]);
len = write(sfd, req, strlen(req));
if(-1 == len)
{
exit(4);
}
while(len = read(sfd, buf, BUF_SIZE))
{
buf[len] = 0;
content += buf;
}
cout<<content<<endl;
exit(0);
}
linux c socket 读取网页
最新推荐文章于 2023-10-09 11:36:41 发布