首页 C/C++修行正文

C++ socket 仿Get请求 获取网页源代码

欲儿 C/C++修行 2019-07-16 388 0

哈哈哈哈

#include<winsock2.h>
#include<stdio.h>
#include <string.h>
#include <string>
#include<iostream>
using namespace std;
#pragma comment(lib,"ws2_32.lib")//链接这个库 

int main()
{
	system("chcp 65001");//很多时候,中文乱码,加上就行了
	WORD sockVersion = MAKEWORD(1, 1);
	WSADATA data;
	if (WSAStartup(sockVersion, &data) != 0)
	{
		printf("初始化失败");
		while (1);
		return 0;
	}


	SOCKET sclient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	if (sclient == INVALID_SOCKET)
	{
		printf("创建套接字失败");
		while (1);
		return 0;
	}

	sockaddr_in serAddr; //要连接的服务器端 的 端点地址
	serAddr.sin_family = AF_INET;
	serAddr.sin_port = htons(80);
	serAddr.sin_addr.S_un.S_addr = inet_addr("156.232.1.134"); //将ip变为地址结构


	if (connect(sclient, (sockaddr*)&serAddr, sizeof(serAddr)) == SOCKET_ERROR)
	{
		printf("连接主机失败");
		closesocket(sclient);
		while (1);
		return 0;
	}

	char *sendData = 
		"Get / HTTP/1.1\r\n"
		"Connection:Keep-Alive\r\n"
		"host:www.anyuer.club\r\n"
		"User-Agent:Mozilla/5.0\r\n\r\n";
	//这里我说一下,有些网站是区分Get 和GET的,所以你要根据情况输入Get还是GET
	send(sclient, sendData, strlen(sendData), 0);



	char recData[1024];
	int ret = recv(sclient, recData, 1024, 0);
	printf("来自服务器返回的数据:\n");
	while (true)
	{
		if (ret>0)
		{
			
			printf(recData);
			ret = recv(sclient, recData, 1024, 0);
		}
	}

	while (1);
	WSACleanup();
	return 0;
}

测试图片

image.png



版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论