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

STM32 + W5500 实现HTTPS !

两点:

1. 让我们先站在操作系统之上的网络协议栈再之上来思考……

2. 我们先简单粗暴地理解为:http + (加密)= https

先弄一个简单的HTTP网络客户端,连接服务器并读取默认页面。该应用程序可能如下所示:

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdio.h>
#include <netdb.h>#define SERVER_PORT 80
#define SERVER_NAME "localhost"
#define GET_REQUEST "GET / HTTP/1.0\r\n\r\n"int main( void )
{int ret, len, server_fd;unsigned char buf[1024];struct sockaddr_in server_addr;struct hostent *server_host;/** Start the connection*/printf( "\n  . Connecting to tcp/%s/%4d...", SERVER_NAME,SERVER_PORT );fflush( stdout );if( ( server_host = gethostbyname( SERVER_NAME ) ) == NULL ){printf( " failed\n  ! gethostbyname failed\n\n");goto exit;}if( ( server_fd = socket( AF_INET, SOCK_STREAM, IPPROTO_IP) ) < 0 ){printf( " failed\n  ! socket returned %d\n\n", server_fd );goto exit;}memcpy( (void *) &server_addr.sin_addr,(void *) server_host->h_addr,server_host->h_length );server_addr.sin_family = AF_INET;server_addr.sin_port = htons( SERVER_PORT );if( ( ret = connect( server_fd, (struct sockaddr *) &server_addr,sizeof( server_addr ) ) ) < 0 ){printf( " failed\n  ! connect returned %d\n\n", ret );goto exit;}printf( " ok\n" );/** Write the GET request*/print

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 从Profinet到Ethernet IP网关技术重塑工业网络,数据传输更流畅
  • Vue3 父组件向子组件传值:异步数据处理的显示问题
  • MiniDB 使用手册
  • LIN总线CAPL函数——校验和段(Checksum)测试(linGetChecksum)
  • QT事件用法详解
  • 【网络安全 | 代码审计】JFinal之DenyAccessJsp绕过
  • GBase8c主备版500升级步骤
  • 基于R语言的统计分析基础:使用键盘输入数据
  • 重新认识一下JNIEnv
  • RFID技术实现消防物资消防车无感化智能管理设计方案
  • ECMAScript与JavaScript的区别
  • 【leetcode】树形结构习题
  • 张雪峰分享:未来不容错过的5个证书考试
  • 直播开播极速流,如何有效接入?
  • git常用命令(patch补丁和解决冲突)
  • 【面试系列】之二:关于js原型
  • ECMAScript入门(七)--Module语法
  • IDEA 插件开发入门教程
  • JDK 6和JDK 7中的substring()方法
  • MySQL-事务管理(基础)
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • tab.js分享及浏览器兼容性问题汇总
  • VuePress 静态网站生成
  • Vue组件定义
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 第十八天-企业应用架构模式-基本模式
  • 基于webpack 的 vue 多页架构
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 算法之不定期更新(一)(2018-04-12)
  • 详解NodeJs流之一
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ![CDATA[ ]] 是什么东东
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (10)ATF MMU转换表
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (12)Hive调优——count distinct去重优化
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (pycharm)安装python库函数Matplotlib步骤
  • (web自动化测试+python)1
  • (阿里云万网)-域名注册购买实名流程
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • .form文件_一篇文章学会文件上传
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .py文件应该怎样打开?
  • @RequestBody与@ModelAttribute
  • @RestControllerAdvice异常统一处理类失效原因
  • @Value获取值和@ConfigurationProperties获取值用法及比较(springboot)
  • [1] 平面(Plane)图形的生成算法