Linux中HTTP的请求
HTTP请求的步骤:1.建立TCP 通信连接2.制定HTTP协议例如:GET / HTTP/1.1\r\nHost:www.baidu.com\r\n\r\n3.发送制定好的HTTP协议4.接收服务器所返回的数据,完成一次HTTP请求注意:HTTP请求的默认端口为 80如果要获取服务器的IP地址:1.可以通过gethostbyname获取。在浏览器中按 F12再按F5 点击相应的连接获取IP地址#
·
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);
}
更多推荐
已为社区贡献1条内容
所有评论(0)