当前位置: 首页 > news >正文

嵌入式第三十七天(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.dtcms.com/a/350018.html

相关文章:

  • 物联网时序数据库IoTDB架构解析
  • 告别“复制粘贴”式换肤:我用Adobe XD组件变体与CC库,构建多品牌设计系统架构
  • Android用Coil 3检查媒体资源是否有效,Kotlin
  • 【Github】Windows原始hosts文件内容及加速访问Github的方法
  • Linux系统操作编程——http
  • Zabbix Vs. Grafana
  • 在压力测试中如何确定合适的并发用户数?
  • ASP.NET Core 中的构建者模式
  • uniapp中加载.urdf后缀的3D模型(three.js+urdf-loader)
  • 灰狼算法+四模型对比!GWO-CNN-BiLSTM-Attention系列四模型多变量时序预测
  • day62 Floyd 算法 A * 算法
  • 【GPT入门】第58课 感性认识Imdeploy介绍与实践
  • GPT-5评测
  • .prettierrc有什么作用,怎么书写
  • 考研复习-操作系统-第三章-内存管理
  • LRU实现
  • 【YOLOv5部署至RK3588】模型训练→转换RKNN→开发板部署
  • 冯·诺依曼架构:现代计算机的基石与瓶颈
  • 创新BIM技术在大型冶金综合管网项目中的应用
  • redis知识点
  • MyBatis-Plus 快速入门 -常用注解
  • response.json()与 json.loads(json_string)有何区别
  • 2025年5月架构设计师案例分析真题回顾,附参考答案、解析及所涉知识点(一)
  • 【Java】 Spring Security 赋能 OAuth 2.0:构建安全高效的现代认证体系
  • spring boot开发:一些基础知识
  • 5分钟了解单元测试
  • 大数据量的ArrayList怎么获取n个元素
  • Ansible 环境配置(基于 RHEL 9)
  • 文件权限详解
  • Allegro-过孔篇(普通VIA,盲埋孔)