#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstring>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
using namespace std;
#define DEST_IP "193.17.46.89"
#define DEST_PORT 80
#define MAX_DATA_SIZE 40960
int main()
{
int ret;
int sockfd;
struct sockaddr_in dest_addr;
memset(&dest_addr, 0x00, sizeof(sockaddr_in));
dest_addr.sin_family = AF_INET;
dest_addr.sin_addr.s_addr = inet_addr(DEST_IP);
dest_addr.sin_port = htons(DEST_PORT);
cout << "dest addr IP:" << inet_ntoa(dest_addr.sin_addr) << endl;
sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sockfd < 0) {
cout << "create socket fail!" << endl;
exit(1);
}
ret = connect(sockfd, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr));
if (ret != 0) {
cout << "connect server fail!" << endl;
close(sockfd);
exit(1);
} else {
cout << "connect server success!" << endl;
}
int sendlen, recvlen;
char recvbuf[MAX_DATA_SIZE] = {0};
string str = "GET /top/rss.xml HTTP/1.1\r\n";
str.append("Host: news.liga.net\r\n");
str.append("Connection: keep-alive\r\n");
#if 0
str.append("Cache-Control: max-age=0\r\n");
str.append("Upgrade-Insecure-Requests: 1\r\n");
str.append("User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36\r\n");
str.append("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n");
str.append("Accept-Encoding: gzip, deflate\r\n");
str.append("Accept-Language: zh-CN,zh;q=0.9\r\n");
#endif
str.append("\r\n");
sendlen = send(sockfd, str.c_str(), str.length(), 0);
if (sendlen < 0) {
cout << "send fail" << endl;
close(sockfd);
exit(1);
}
if ((recvlen = recv(sockfd, &recvbuf, sizeof(recvbuf), 0)) == -1) {
cout << "recv fail" << endl;
close(sockfd);
exit(1);
} else {
ofstream file;
file.open("test.xml");
file.write(recvbuf, sizeof(recvbuf));
file.close();
}
close(sockfd);
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)