嵌入式第三十七天(TCP补充,应用层协议(HTTP))

一.TCP机制

二.HTTP协议

1.

2.

3.

4.

5.

6.

7.

8.

#ifndef _HEAD_H
#define _HEAD_H#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<arpa/inet.h>
#include<sys/socket.h>#endif
#include "head.h"#define SER_PORT 80
#define SER_IP "219.144.82.95"int create_tcp_connect()
{int sockfd = socket(AF_INET,SOCK_STREAM,0);if(sockfd < 0){perror("socket errror");return -1;}struct sockaddr_in seraddr;seraddr.sin_family = AF_INET;seraddr.sin_port = htons(SER_PORT);seraddr.sin_addr.s_addr = inet_addr(SER_IP);int ret = connect(sockfd,(struct sockaddr*)&seraddr,sizeof(seraddr));if(ret < 0){perror("connect error");return -1;}return sockfd;
}int send_http_request(int sockfd)
{char *preq = "GET / HTTP/1.1\r\n""Host: news.sohu.com\r\n""User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0\r\n""Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8\r\n""Accept-Language: en-US,en;q=0.5\r\n""Connection: close\r\n""\r\n";ssize_t cnt = send(sockfd,preq,strlen(preq),0);if(cnt < 0){perror("send error");return -1;}return sockfd;
}int recv_http_response(int sockfd)
{char buff[1024] = {0};while(1){ssize_t cnt = recv(sockfd,buff,sizeof(buff),0);if(cnt < 0){perror("recv error");break;}else if(0 == cnt){printf("接收结束\n");break;}write(1,buff,cnt);}return 0;
}int main(int argc,const char *argv[])
{int sockfd = create_tcp_connect();if(sockfd < 0){perror("sockfd errror");return -1;}send_http_request(sockfd);recv_http_response(sockfd);close(sockfd);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/97096.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/97096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch核心配置详解与优化

Elasticsearch 的核心配置文件主要用于控制节点行为、集群设置、资源分配和日志记录等关键功能。主要配置文件通常位于 ES_HOME/config 目录下&#xff0c;以下是三个最核心的配置文件及其详细说明&#xff1a; 1. elasticsearch.yml 核心集群与节点配置 这是最重要的配置文件…

机器学习框架下:金价近3400关口波动,AI量化模型对PCE数据的动态监测与趋势预测

摘要&#xff1a;本文通过AI多因子模型&#xff0c;结合宏观经济数据、政策动态及市场情绪因子&#xff0c;分析黄金价格波动机制及关键驱动要素。基于量化策略与自然语言处理技术&#xff0c;对美联储独立性争议、美债收益率曲线形态及PCE通胀数据等核心变量进行动态建模&…

【Redis#8】Redis 数据结构 -- Zset 类型

一、引言 定义&#xff1a;有序集合&#xff08;Zset&#xff09;是Redis中的一种数据结构&#xff0c;它结合了哈希表和跳跃列表的特性。每个 member 都有一个分数(score)&#xff0c;根据这个分数进行排序。 特点&#xff1a; member 不能重复&#xff0c;但分数可以相同&…

Postman 模拟mcp tool调用过程

文章目录 初始化调用 mcp server使用modelcontextprotocol 的java sdk编写 初始化 1.网页访问http://localhost:8090/sse,此页面保持开启,会不断接收到sse事件. 会返回一个endpoint,例如/mcp/message?sessionId111 2.初始化请求,postman发送post请求 url:http://localhost:…

init.usb.configfs.rc的USB动态配置

1. 什么是ConfigFSConfigFS 是 Linux 内核提供的一种用户空间可配置的伪文件系统在Linux内核中一个设备&#xff08;如手机&#xff09;作为USB从设备时&#xff0c;成为一个“Gadget”。路径&#xff1a;/config/usb_gadget/&#xff0c;g1表示系统重第一个USB Gadget的配置实…

广东省省考备考(第八十九天8.28)——判断推理(听课后强化训练)

判断推理&#xff1a;定义判断 错题解析 第一步&#xff1a;找出定义关键词。 “为了明确所承运的货物是否发生了残损&#xff0c;以及残损责任是否属于船方”。 第二步&#xff1a;逐一分析选项。 A项&#xff1a;甲船向商检机构申请检查船舶卸货前舱口、风筒的封盖和封识情况…

【C++】C++11的右值引用和移动语义

各位大佬好&#xff0c;我是落羽&#xff01;一个坚持学习进步的学生。 如果您觉得我的文章还不错&#xff0c;欢迎多多互三分享交流&#xff0c;一起学习进步&#xff01; 也欢迎关注我的blog主页: 落羽的落羽 文章目录一、C11简介二、左值和右值是什么三、左值引用与右值引…

Logic Error: 如何识别和修复逻辑错误

逻辑错误是指程序中的代码在语法上是正确的&#xff0c;但在执行时没有按预期工作。这种错误可能导致程序输出错误的结果或行为异常。逻辑错误通常比语法错误更难检测&#xff0c;因为它们不会产生编译或解释错误。本文将详细介绍如何识别和修复逻辑错误。一、识别逻辑错误1. 理…

TUN模式端口冲突 启动失败如何解决?

从日志信息来看&#xff0c;TUN模式启动失败是由于端口冲突导致的。 具体来说&#xff0c;Xray在尝试监听10808端口时失败了&#xff0c;因为该端口已经被其他进程占用。 错误信息分析 Failed to start: app/proxyman/inbound: failed to listen TCP on 10808 > transport/i…

如何调试一个EVM合约:实战操作 + 常见报错说明

在Solidity开发过程中&#xff0c;大多数开发者最常遇到的问题不是“代码写不了”&#xff0c;而是“代码部署了&#xff0c;但行为不对”。本篇文章将带你梳理一套完整的EVM智能合约调试流程&#xff0c;并附上几类真实常见报错场景及排查方法&#xff0c;适用于Hardhat、Remi…

使用Wireshark分析自助终端机网络数据

如果是明文还好&#xff0c; 是密文就没办法了。工具.1自助终端机.2组装结构主流架构选择‌B/S架构‌&#xff1a;通过Web应用调用本地硬件插件&#xff0c;开发速度快但依赖浏览器兼容性。 ‌‌C/S架构‌&#xff1a;直接调用硬件驱动&#xff0c;交互响应快但更新维护复杂。 …

数学建模——马尔科夫链(Markov Chain Model)

数学建模——马尔科夫链&#xff08;Markov Chain Model&#xff09;一、马尔可夫链的定义1. 状态与状态空间2. 无后效性&#xff08;马尔科夫性&#xff09;​3. 转移概率与转移概率矩阵&#xff08;1&#xff09;一步转移概率&#xff08;2&#xff09;转移概率矩阵二、马尔科…

《拉康精神分析学中的欲望辩证法:能指的拓扑学与主体的解构性重构》

在当代人文思想图谱中&#xff0c;雅克拉康以语言学为利刃对弗洛伊德理论进行的结构性重铸构成了20世纪最具颠覆性的理论创造之一。这位被誉为"法国弗洛伊德"的思想巨匠通过"回到弗洛伊德"的口号&#xff0c;实则完成了对精神分析学的哥白尼式革命——将主…

数字时代下的智能信息传播引擎

在商场、楼宇、交通枢纽等公共场所&#xff0c;数字广告机已成为信息传播的重要载体。其背后的广告机系统&#xff0c;是一套集硬件控制、内容管理、网络传输与数据分析于一体的综合技术解决方案&#xff0c;正推动传统静态广告向动态化、交互化、智能化方向演进。系统架构与核…

文献阅读笔记:KalmanNet-融合神经网络和卡尔曼滤波的部分已知动力学状态估计

文献阅读笔记&#xff1a;KalmanNet-融合神经网络和卡尔曼滤波的部分已知动力学状态估计摘要一、研究背景1.1 状态估计问题的重要性1.2 传统方法的局限&#xff1a;非线性与模型不确定性非线性问题噪声统计未知问题1.3 数据驱动方法的兴起与局限1.4 KalmanNet&#xff1a;混合方…

使用EasyExcel根据模板导出文件

文章目录概要工具类核心功能核心代码解析模板导出核心方法文件下载处理HTTP响应设置文件下载处理使用示例概要 在企业级应用开发中&#xff0c;Excel数据导出是一个常见的需求。本文实现一个基于阿里巴巴EasyExcel库实现的根据模板导出文件的工具类&#xff0c;它通过预定义的…

【AI基础:神经网络】19、机器学习实战:径向基函数神经网络(RBFN)指南

一、引言:为什么RBFN是神经网络中的“局部专家”? 在机器学习领域,神经网络的“全局逼近”与“局部逼近”一直是两大核心思路。像我们熟悉的多层感知机(MLP),使用Sigmoid、ReLU等全局激活函数,每个神经元都会对整个输入空间产生响应——就像“全员参与”处理所有数据,…

Linux 性能调优实战:CPU、磁盘 I/O、网络与内核参数

前言 一、CPU 资源调优 1. 调整进程优先级&#xff08;nice/renice&#xff09; 2. 设置 CPU 亲和力&#xff08;taskset&#xff09; 3. 查看 CPU 信息 4. 使用 vmstat 分析系统瓶颈 二、磁盘 I/O 调优 1. ulimit 资源限制 2. 磁盘速度测试 三、内核参数调优 1. 常用…

【进阶篇第五弹】《详解存储过程》从0掌握MySQL中的存储过程以及存储函数

文章目录存储过程一、基本语法(1)创建存储过程(2)调用存储过程(3)查看存储过程(4)删除存储过程(5)设置结束符(6)参数二、变量(1)系统变量(2)用户自定义变量(3)局部变量三、基本语句(1)if判断(2)case(3)while循环(4)repeat(5)loop循环四、游标五、条件处理程序六、存储函数存储过…

HarmonyOS布局实战:用声明式UI构建自适应电商卡片

首先诚邀大家参加学习鸿蒙拿好礼活动&#xff0c;即日起&#xff0c;只要加入班级考取华为开发者基础/高级证书&#xff0c;并发表一篇技术文章&#xff0c;就有机会获得官方发放的精美礼品&#xff0c;数量有限&#xff0c;先到先得。冷老师的班级链接如下&#xff1a;​华为开…