4.物联网LWIP之C/S编程

news2025/1/22 12:41:47

LWIP配置

服务器端实现

客户端实现

错误分析

一。LWIP配置(FREERTOS配置,ETH配置,LWIP配置)

1.FREERTOS配置

 为什么要修改定时源为Tim1?不用systick?

原因:HAL库与FREERTOS都需要使用systick,两者冲突,所以修改时钟源,让FREERTOS使用Tim1。

 2.ETH配置

 3.LWIP配置

 4.步骤:
(1)freertos.c中会自己出现一个Lwip初始化

运行后结果:命令行中输入ping 192.168.1.10有回复

 二。服务器端

1.功能分析

小写转大写

 2.建立socket_tcp_server.h

#ifndef SOCKET_TCP_SERVER_H
#define SOCKET_TCP_SERVER_H

#define SERVER_IP				"192.168.1.11"
#define SERVER_PORT			6666
#define BUFF_SIZE				1024

void vTcpServerTask(void);

#endif

 3.建立socket_tcp_server.c,并添加到文件中

#include "socket_tcp_server.h"
#include "lwip/sockets.h"
#include "ctype.h"

char ReadBuff[BUFF_SIZE];

/**
  * @brief  TCP 服务器任务
  * @param  None
  * @retval None
  */
void vTcpServerTask(void){

	int 	 sfd, cfd, n, i;
	struct sockaddr_in server_addr, client_addr;
	socklen_t	client_addr_len;
	
	//创建socket
	sfd = socket(AF_INET, SOCK_STREAM, 0);
	server_addr.sin_family 			= AF_INET;
	server_addr.sin_port   			= htons(SERVER_PORT);
	server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
	//绑定socket
	bind(sfd, (struct sockaddr *)&server_addr, sizeof(server_addr));
	//监听socket
	listen(sfd, 5);
	//等待客户端连接
	client_addr_len = sizeof(client_addr);
	cfd = accept(sfd, (struct sockaddr *)&client_addr, &client_addr_len);
	printf("client is connect cfd = %d\r\n",cfd);
	while(1){
		//等待客户端发送数据
		n = read(cfd, ReadBuff, BUFF_SIZE);
		//进行大小写转换
		for(i = 0; i < n; i++){
		
			ReadBuff[i] = toupper(ReadBuff[i]);		
		}
		//写回客户端
		write(cfd, ReadBuff, n);
	}
}

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

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

相关文章

MQTT协议--技术文档--搭建mqtt服务器--《EMQX单体服务器部署》

产品概览 | EMQX 5.1 文档 什么是EMQX&#xff1f; EMQX 是一款开源 (opens new window)的大规模分布式 MQTT 消息服务器&#xff0c;功能丰富&#xff0c;专为物联网和实时通信应用而设计。EMQX 5.0 单集群支持 MQTT 并发连接数高达 1 亿条&#xff0c;单服务器的传输与处理…

前端开发工具及环境配置

1.前端开发环境node npm环境配置 第一步&#xff1a;打开Download | Node.js (nodejs.org)下载&#xff0c;解压。 找到下载压缩包进行解压 解压到D盘目录下&#xff1a; 第二步&#xff1a;配置环境变量&#xff1a;右击此电脑点击属性进入高级系统设置 点击高级系统设置进入…

泛微E8配置自定义触发流程失败

在新公司接了个配置泛微流程触发的活。因为泛微的官方文档并没有详细的操作指引&#xff0c;在测试环境配置之后、要触发的流程可以手工提交&#xff0c;但是触发一直不成功。简单记录下业务场景和其他处理信息&#xff0c;以供参考。 应用版本 目前使用了泛微 E8 &#xff0…

无涯教程-Perl - warn函数

描述 此函数将LIST的值打印到STDERR。基本上与die函数相同,除了不对出口进行任何调用并且在eval语句内不引发异常。这对于引发错误而不导致脚本过早终止很有用。 如果变量$包含一个值(来自先前的eval调用),并且LIST为空,则$的值将以。\t.caught打印。附加到末尾。如果$和LIST…

GPT-4一纸重洗:从97.6%降至2.4%的巨大挑战

斯坦福大学和加州大学伯克利分校合作进行的一项 “How Is ChatGPTs Behavior Changing Over Time?” 研究表明&#xff0c;随着时间的推移&#xff0c;GPT-4 的响应能力非但没有提高&#xff0c;反而随着语言模型的进一步更新而变得更糟糕。 研究小组评估了 2023 年 3 月和 20…

为AI而生的数据库:Milvus详解及实战

1 向量数据库 1.1 向量数据库的由来 在当今数字化时代&#xff0c;人工智能AI正迅速改变着我们的生活和工作方式。从智能助手到自动驾驶汽车&#xff0c;AI正在成为各行各业的创新引擎。然而&#xff0c;这种AI的崛起也带来了一个关键的挑战&#xff1a;如何有效地处理和分析…

lama-cleaner:基于SOTA AI 模型Stable Diffusion驱动的图像修复工具

介绍 由 SOTA AI 模型提供支持的图像修复工具。从照片中删除任何不需要的物体、缺陷、人物&#xff0c;或擦除并替换&#xff08;由Stable Diffusion驱动&#xff09;照片上的任何东西。 特征 1.多种SOTA AI模型 擦除模型&#xff1a;LaMa/LDM/ZITS/MAT/FcF/Manga 擦除和替…

Spring的生命周期及Spring Bean单例和多例---超详细教学

一&#xff0c;何为spring生命周期 一个Bean对象从被Spring容器创建到被销毁的整个过程。Spring框架对Bean对象的生命周期进行了管理&#xff0c;提供了灵活性和控制权&#xff0c;让开发人员能够在不同的阶段进行自定义操作 1.1生命周期图 1.2.为什么要学习对象的生命周期…

source insight 添加宏-文件头加注释

source insight 3.5 自带的一些宏&#xff0c;在安装目录下的 utils.em 文件中&#xff0c;用户也可以自己写文件&#xff0c;命令为xxx.em &#xff0c;然后把这个文件添加到项目中即可&#xff0c;添加后在菜单栏 Options -> Key Assignments 里输入macro 就能显示新添加的…

【校招VIP】产品分析之策略量化分析

考点介绍&#xff1a; 产品的设计和迭代需要通过数值来进行分析&#xff0c;那么如何去制定一个数值策略&#xff0c;区分好坏的情况&#xff0c;就会非常的重要。属于数据量化的范畴。 『产品分析之策略量化分析』相关题目及解析内容可点击文章末尾链接查看&#xff01; 一、…

解决微信消息接收问题,原来只需设置这三个地方,让你涨知识

在日常使用微信的过程中&#xff0c;你是否曾经遇到过无法接收消息或消息延迟的问题&#xff1f;如果是的话&#xff0c;别着急&#xff01;今天&#xff0c;我们将为你揭示解决这个问题的简单方法&#xff0c;原来只需设置这三个地方&#xff0c;让你的微信恢复正常运行。 首先…

openGauss学习笔记-43 openGauss 高级数据管理-事件触发器

文章目录 openGauss学习笔记-43 openGauss 高级数据管理-事件触发器43.1 语法格式43.2 参数说明43.3 示例 openGauss学习笔记-43 openGauss 高级数据管理-事件触发器 触发器会在指定的ddl事件发生时自动执行函数。目前事件触发器仅在PG兼容模式下可用。 43.1 语法格式 创建事…

【Java 动态数据统计图】动态数据统计思路案例(动态,排序,数组)二(113)

需求&#xff1a; 有一个List<Map<String.Object>>,存储了区域的数据&#xff0c; 数据是根据用户查询条件进行显示的&#xff1b;所以查询的数据是动态的&#xff1b;按区域维度统计每个区域出现的次数&#xff0c;并且按照次数的大小排序&#xff08;升序&#…

在线零售供应链管理:从0到100

全球57%的公司将其供应链视为竞争优势&#xff0c;然而只有6%的人表示完全了解它。无论您是首次在线卖家还是经验丰富的专业人士&#xff0c;驾驭管理高效且具有成本效益的零售供应链的复杂性都可能具有挑战性。一起来了解一下吧&#xff01; 供应链管理是什么&#xff1f;它基…

【LeetCode75】第三十一题 反转链表

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 最经典的链表题&#xff0c;没有之一&#xff01;&#xff01;&#xff01; 强烈建议直接把模板记住&#xff01;&#xff01;&#xf…

FairyGUI编辑器自定义菜单扩展插件

本文涉及到的软件有&#xff1a;FairyGUI&#xff0c;VSCode 代码环境涉及到了&#xff1a;Lua VSCode插件&#xff1a;EmmyLua 在编写FairyGUI编辑器菜单前&#xff0c;了解一下FairyGUIEditor的API会有效的帮助我们解决很多问题。FairyGUI的扩展是通过编辑器自带的插件功能…

sed 语法和基础命令

1. 准备工作 准备备一个数据文件data.txt&#xff0c;内容如下&#xff1a; 101,Zhang san,Fu Jian 102,Li si,Shan Dong 103,Wang Wu,Bei Jing 104,Zhao Qian Sun,Zhe Jiang 105,Ge Lin,Shang Hai 每一行为一条数据&#xff0c;每条数据包含三个元素&#xff1a;ID&#xf…

薪资涨幅1000%+,转行学Java后,他彻底开挂了

以下为学长故事的文字版&#xff1a; 哈喽黑马程序员的学员们大家好&#xff0c;我是17级毕业的学长陈同学&#xff0c;很高兴和大家分享我的转行故事。 来黑马前后的变化 我刚毕业是去了浙江的一个电力公司&#xff0c;做电器的一个项目&#xff0c;这个项目一共工作了半年…

PIN TO PIN替代LT8911EXB|CS5523低成本替代LT8911EXB|MIP DSI转DP EDP方案设计

PIN TO PIN替代LT8911EXB|CS5523低成本替代LT8911EXB|MIP DSI转DP EDP方案设计 LT8911EXB是MIPI DSI/CSI 转eDP转换芯片&#xff0c;ASL CS5523不需要改电路就可以直接PIN TO PIN替代与兼容LT8911EXB。 ASL CS5523与 LT8911EXB的功能与参数&#xff0c;用途方式以及封装方式和…