HTTP请求的步骤:

1.建立TCP 通信连接

2.制定HTTP协议例如: GET / HTTP/1.1\r\nHost:www.baidu.com\r\n\r\n

3.发送制定好的HTTP协议

4.接收服务器所返回的数据,完成一次HTTP请求

注意:HTTP请求的默认端口为 80
如果要获取服务器的IP地址:1.可以通过gethostbyname获取。在浏览器中按 F12 再按F5 点击相应的连接获取IP地址

#include <stdio.h>
#include <stdio.h>
#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h> /* superset of previous */
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <pthread.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main()
{
	//1.创建网络通信对象
	int sockfd = socket(AF_INET, SOCK_STREAM , 0);
	if (sockfd == -1) 
	{
		perror("socket error!");
		return 0;
	}

	//2.定义网络信息结构体
    struct sockaddr_in seraddr;
    seraddr.sin_family = AF_INET;
    seraddr.sin_port = htons(80);   //所有的HTTP请求端口都是80 
    seraddr.sin_addr.s_addr = inet_addr("42.192.160.185");  //服务器的IP地址信息

	//3.链接网络服务器
	int ret = connect(sockfd,  (struct sockaddr *)&seraddr, sizeof(struct sockaddr));
	if (ret == -1)
	{
		perror("connect error");
		return 0;
	}
	else
	{
		printf("connect ok\n");
	}
	
	//www.baidu.com/ 
	//www.baidu.com  -> HOST 
	//  / 		-》 URL 
	
	//http://api.qingyunke.com/api.php?key=free&appid=0&msg=问题
	
	//HOST : api.qingyunke.com 
	//URL  :  /api.php?key=free&appid=0&msg=问题
	//制定HTTP 请求协议  
	char  *http = "GET /api.php?key=free&appid=0&msg=你多大 HTTP/1.1\r\nHost:api.qingyunke.com\r\n\r\n";  
	
	//发送HTTP协议给百度服务器  
	write(sockfd,http,strlen(http));
	
	
	
	//读取服务器返回的数据 
	char buf[4096*10]={0};
	
	
	printf("等待服务器应答\n");
	read(sockfd,buf,4096*10);   
	
	//去除头数据 
	char del_head[1024]={0};
	strcpy(del_head,strstr(buf,"\r\n\r\n"));
	
	
	printf("服务器应答数据为 %s\n",del_head);
}
	
Logo

更多推荐