windows网络——发送http请求




#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")

#define DEFAULT_BUFFER      2048
#define DEFAULT_MESSAGE     "GET / HTTP/1.1\r\nHost:10.0.10.1\r\n\
Connection:keep-alive\r\n\
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n\
user-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36\r\n\
Accept-Encoding: gzip,deflate,sdch\r\n\
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6\r\n\
\r\n"

int maintt(int argc,char* argv[])
{
	WSADATA       wsd;
	SOCKET        sClient;
	int iPort = 80;
	char *serverIP = "10.0.10.1";
	int		ret;
	char   szBuffer[DEFAULT_BUFFER],
	      szMessage[1024];        // Message to send to sever
	struct sockaddr_in server;
	struct hostent    *host = NULL;
	
	
	if(argc > 1)
	{
		iPort = atoi(argv[1]);
	}
	if(argc > 2)
	{
		serverIP = argv[2];
	}

	if (WSAStartup(MAKEWORD(2,2), &wsd) != 0)
	{
		printf("Failed to load Winsock library!\n");
		system("pause");
		return 1;
	}

	sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	if (sClient == INVALID_SOCKET)
	{
		printf("socket() failed: %d\n", WSAGetLastError());
		return 1;
	}
	server.sin_family = AF_INET;
	server.sin_port = htons(iPort);
	server.sin_addr.s_addr = inet_addr(serverIP);

	if (server.sin_addr.s_addr == INADDR_NONE)
	{
		host = gethostbyname(serverIP);
		if (host == NULL)
		{
			printf("Unable to resolve server: %s\n", serverIP);
			system("pause");
			return 1;
		}
		CopyMemory(&server.sin_addr, host->h_addr_list[0],
			host->h_length);
	}




	if (connect(sClient, (struct sockaddr *)&server, 
		sizeof(server)) == SOCKET_ERROR)
	{
		printf("connect() failed: %d\n", WSAGetLastError());
		system("pause");
		return 1;
	}

    strcpy(szMessage, DEFAULT_MESSAGE);
	ret = send(sClient, szMessage, strlen(szMessage), 0);
	if (ret == 0)
	{	perror("send();");}
	else if (ret == SOCKET_ERROR)
	{
		printf("send() failed: %d\n", WSAGetLastError());
		
	}
	printf("Send %d bytes\n", ret);

	ret = recv(sClient, szBuffer, DEFAULT_BUFFER, 0);
	if (ret == 0)        // Graceful close
	perror("send();");
	else if (ret == SOCKET_ERROR)
	{
		printf("recv() failed: %d\n", WSAGetLastError());
		
	}
	szBuffer[ret] = '\0';
	printf("RECV [%d bytes]: '%s'\n", ret, szBuffer);

	system("pause");
	closesocket(sClient);

	WSACleanup();

	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZenZenZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值