Linux中HTTP的请求

2023-05-16

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);
}
	
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux中HTTP的请求 的相关文章

  • 如何从 Bash 命令行在后台 Vim 打开另一个文件?

    我正在从使用 Gvim 过渡到使用控制台 Vim 我在 Vim 中打开一个文件 然后暂停 Vim 在命令行上运行一些命令 然后想返回到 Vim Ctrl Z 在正常模式下 暂停 Vim 并返回到控制台 fg可用于将焦点返回到 Vim job
  • MySQL 与 PHP 的连接无法正常工作

    这是我的情况 我正在尝试使用 Apache 服务器上的 PHP 文件连接到 MySQL 数据库 现在 当我从终端运行 PHP 时 我的 PHP 可以连接到 MySQL 数据库 使用 php f file php 但是当我从网页执行它时 它只
  • Bash:将字符串添加到文件末尾而不换行

    如何将字符串添加到文件末尾而不换行 例如 如果我使用 gt gt 它将添加到文件末尾并换行 cat list txt yourText1 root host 37 echo yourText2 gt gt list txt root hos
  • Chrome 在传输一定量的数据后挂起 - 等待可用的套接字

    我有一个浏览器游戏 最近我开始向游戏添加音频 Chrome 无法加载整个页面并卡在 91 requests 8 1 MB transferred 并且不再加载任何内容 它甚至破坏了所有其他选项卡中的网站 说Waiting for avail
  • Ruby:在 Ubuntu 上安装 rmagick

    我正在尝试在 Ubuntu 10 04 上安装 RMagick 看起来here https stackoverflow com questions 1482823 is there an easy way to install rmagic
  • 为什么此 NASM 代码会打印我的环境变量?

    本学期我刚刚完成计算机体系结构课程 除其他外 我们一直在涉足 MIPS 汇编并在 MARS 模拟器中运行它 今天 出于好奇 我开始在我的 Ubuntu 机器上摆弄 NASM 基本上只是将教程中的内容拼凑起来 并感受一下 NASM 与 MIP
  • 嵌入清单文件以要求具有 mingw32 的管理员执行级别

    我正在 ubuntu 下使用 i586 mingw32msvc 交叉编译应用程序 我很难理解如何嵌入清单文件以要求 mingw32 具有管理员执行级别 对于我的例子 我使用了这个hello c int main return 0 这个资源文
  • 如何才能将 TCP 连接返回到同一端口?

    机器是 RHEL 5 3 内核 2 6 18 有时我在 netstat 中注意到我的应用程序有连接 建立了 TCP 连接本地地址 and 国外地址是一样的 其他人也报告了同样的问题 症状与链接中描述的相同 客户端连接到本地运行的服务器的端口
  • grep 排除文件的数组参数

    我想从我的文件中排除一些文件grep命令 为此我使用参数 exclude excluded file ext 为了更容易阅读 我想使用包含排除文件的 bash 数组 EXCLUDED FILES excluded file ext 然后将
  • awk 在循环中使用时不打印任何内容[重复]

    这个问题在这里已经有答案了 我有一堆使用 file 1 a 1 txt 格式的文件 如下所示 A 1 B 2 C 3 D 4 并使用以下命令添加包含每个文件名称的新列 awk print FILENAME NF t 0 file 1 a 1
  • 从 HTTP 登录到 HTTPS

    我的网站默认使用 HTTP 我确实有一个启用 HTTPS 的证书 但只有其上的某些区域强制建立安全连接 登录是通过 Ajax 处理的 我想开始使用 SSL 即使请求来自 HTTP 我尝试强制请求的地址具有 HTTPS 并且它完美地回复 然而
  • Linux 中 m 标志和 o 标志将存储在哪里

    我想知道最近收到的路由器通告的 m 标志和 o 标志的值 从内核源代码中我知道存储了 m 标志和 o 标志 Remember the managed otherconf flags from most recently received R
  • 多个客户端如何同时连接到服务器上的一个端口(例如 80)? [复制]

    这个问题在这里已经有答案了 我了解端口工作原理的基础知识 但是 我不明白的是多个客户端如何同时连接到端口 80 我知道每个客户端都有一个唯一的 对于他们的机器 端口 服务器是否从可用端口回复客户端 并简单地声明回复来自 80 这是如何运作的
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu
  • linux下无法创建僵尸进程

    嗯 我有一个奇怪的问题 我无法在我的项目中创建僵尸进程 但我可以在其他文件中创建僵尸进程 有简单的说明 int main if fork 0 printf Some instructions n else sleep 10 wait 0 r
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • 浏览器显示 clojure 环中不存在 access-control-allow-origin 标头

    我通过客户端浏览器向服务器发出请求 如下所示https example com bar https example com bar 但出现错误 Access to XMLHttpRequest at https example com ba

随机推荐

  • 【Vue3系列】 父组件调用子组件的方法-子组件向父组件传值

    一 xff1a 父组件调用子组件的方法 父组件 span class token operator lt span template span class token operator gt span span class token op
  • 【vue】笔记本默认设置125%或者150%缩放,导致布局错乱的解决方法

    目录 一 xff1a 为什么会出现有这个问题 xff1f 二 xff1a 有什么解决方案 xff1f 三 xff1a vue项目utils下新建js四 xff1a 全局导入App vue五 xff1a 重新进入项目六 xff1a 注意事项
  • 【Cocos creator】Cocos creator介绍和入门

    目录 一 工作流程二 安装和启动三 入门示例四 项目结构五 编辑器界面 Cocos Creator 是一个完整的游戏开发解决方案 xff0c 包含了 cocos2d x 引擎的 JavaScript 实现 xff0c 以及快速开发游戏所需求
  • 【Vue面试专题】50+道经典Vue面试题详解!

    目录 前言相关学习资源01 Vue组件之间通信方式有哪些02 v if和v for哪个优先级更高 xff1f 03 能说一说双向绑定使用和原理吗 xff1f 04 Vue中如何扩展一个组件05 子组件可以直接改变父组件的数据么 xff0c
  • 【Uni-App】点击分享,生成海报带二维码,保存到本地图片,写入文字

    目录 一 xff1a 需求二 xff1a 分析三 xff1a 准备工作1 qrcode准备2 并且在main js去挂载 四 xff1a 页面构建1 html2 data3 js 二维码嵌入文字 一 xff1a 需求 1 产品需要这个商品
  • 【Uni-App】uniapp使用uview实现弹出键盘输入密码/验证码功能

    目录 xff08 一 xff09 效果图 xff08 二 xff09 使用组件说明keyboard属性 xff1a keyboard事件 xff1a xff08 五 xff09 js代码实现 xff08 一 xff09 效果图 xff08
  • printf 缓冲区原理 (你想知道的C语言 1.4)

    Q 缓冲区究竟是什么概念 A 缓冲 顾名思义 表示可以酌情商量有回旋余地 可以想象一种只能强制遵守且说一不二的情形 xff0c 一种可以协商开发此消彼长的模式 区 理解成可以协助存储 处理的物理位置 xff0c 一般理解成内存 计算机科学的
  • 【面试题】京东面试查漏补缺

    目录 一 xff1a 笔试题1 如何获取URL中的参数方法一方法二 2 怎么平铺多维数组方法一方法二 xff1a 递归方法三 xff1a flat 和 flatMap 二 xff1a 面试题1 promise相关问题2 vue nextTi
  • 【Vue3】element-plus中el-tree的递归处理赋值回显问题

    目录 一 xff1a 先获取所有权限tree二 xff1a 在获取所有该角色能有的权限tree三 xff1a 递归处理勾选tree节点 由于项目是从0 1开始构建的 rbac都需要重新构建对接 所以涉及到了权限管理和菜单管理 一级菜单包含多
  • 【ChatGPT】体验一下ChatGPT

    体验一下ChatGPT 可以帮你写代码 写邮件 编故事的神器 最近OpenAI 发布了备受期待的原型通用 ChatGPT xff0c 这是一种基于对话的 AI 聊天界面 xff0c 算是GPT 3 Generative Pre traine
  • vant进度条框架报错,百家云移动端h5点播SDK, 二维码分享

    vant进度条框架报错 错误信息 xff1a Invalid prop type check failed for prop percentage Expected Number 网上查找问题原因 xff1a 1 xff0c 因为vant进
  • 51单片机上数码管的静态显示和动态显示

    一 TX1C数码管介绍 共阴极和共阳极数码管 xff0c 实验板上是共阴极数码管 xff0c 6位一体的数码管 连接原理图如下面两图 xff1a 连在一起的段线 xff08 段选线即abcdefgh xff09 控制数码管亮什么数字 xff
  • 51单片机的键盘检测原理

    一 独立键盘检测 1 按键的检测原理 单片机的I O口既可以作为输出也可以作为输入使用 xff0c 检测按键时用的是输入功能 把按键的一端接地 xff0c 另一端与单片机的某个I O口相连 xff0c 开始时先给该I O口赋一个高电平 xf
  • 51单片机上AD和DA操作

    一 ADC0804的操作 1 试验板上ADC0804的接线图 AD芯片上的第5管脚INTR没有接线 xff0c 因为该实验板读取A D数据没有用中断法 xff0c 所以可以不接该引脚 2 芯片的操作时序图如下 操作芯片时基本按照此顺序操作各
  • ESP32上对flash的读取操作

    通过按键控制一个LED灯的亮和灭 xff0c 每次重启时读上一次的状态 span class token macro property span class token directive hash span span class toke
  • 正点原子stm32F407学习笔记6——外部中断实验

    一 GPIO与中断线的映射关系 GPIO 的管脚GPIOx 0 GPIOx 15 x 61 A B C D E xff0c F G H I 分别对应中断线 0 15 这样每个中断线对应了最多 9 个 IO 口 xff0c 以线 0 为例 x
  • 通俗易懂的socket select模型讲解

    通俗易懂的socket select模型讲解 FFFF ireCore 前面一篇介绍了服务器端使用多线程的方式来处理多个客户端的请求的 xff0c 但是当客户端数量增多时线程数量会急剧增加 xff0c 导致消耗大量的资源 于是就引出了服务器
  • 【esp32学习之路7——硬件定时器】

    一 概述 ESP32 的定时器分为 2 组 xff0c 每组 2 个 ESP32 内置 4 个 64 bit 通用定时器 每个定时器包含一个 16 bit 预分频器和一个64 bit 可自动重新加载向上 xff0f 向下计数器 详情可参考乐
  • gcc编译器与Makefile入门

    在Windows下开发通常使用各种IDE xff0c 但在Linux下进行C编程编译代码的话需要用到GCC编译器 一 编译流程 GCC 编译器的编译流程是 xff1a 预处理 编译 汇编和链接 预处理就是展开所有的头文件 替换程序中的宏 解
  • Linux中HTTP的请求

    HTTP请求的步骤 xff1a 1 建立TCP 通信连接 2 制定HTTP协议例如 xff1a GET HTTP 1 1 r nHost www baidu com r n r n 3 发送制定好的HTTP协议 4 接收服务器所返回的数据