| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 串口转TCP开发的注意事项 -> 正文阅读 |
|
[网络协议]串口转TCP开发的注意事项 |
一 TCP与UDP的区别? ? ?TCP是流传输,是需要稳定连接的;稳定连接很重要,连接的意外往往导致很多问题。相比UDP传输,TCP传输不用考虑传输的先后顺序,报文是否到达(报文完整性基本不用考虑),而要考虑连接的意外(例如有更多的同 ip client连接,或者网络中突然间给你来一段也不知道从那里冒出来的信息)。 ? ? UDP是报文传输,优点是发送和接收到很简单。缺点是报文的送达不保证,需要开发者自己去处理可靠性。但是因为所需内存小,很适合单片机使用。 ? ? 都是socket连接,只是在参数上不一样(Dgram 报文 Stream 流),如下 ? ? ?_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); ? ? ?_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Udp); ? ?在发送与接收上,udp使用 recvfrom?sendto 而tcp又read write 等等,流IO基本都可以。 ? ? UDP的一对多应该是同网段内用opt可以解决(没有实测),还有一些人用服务器的方式协助完成。 二? 串口传送丢数据 TCP? ? 现象:在tcp或udp服务器接收不到完整数据,按照帧头读取报文长度很多数据为零。而且错误帧很多。 ? ? 原因: 在服务器中代码使用流接口,其接口读数据是瞬时的,但串口发送数据是瞬间的,在报文定义了报文长度,服务器收到数据检测到数据长度后马上读,实际上串口发送速度比较慢(500Kbit),致使服务器按字节数读取数据读不全。而流接口不报错,直接输出零(估计流接口是输出缓存数据)。导致通讯不正常; ? ?解决防范: 1、 减少报文长度可以减少这种几率,但还存在问题。(没找到原因时测试时发现) ? ? ? ? ? ? ? ? ? ? ? ?2、增加报文检索(计算量大,而且有些socket服务器不支持数据来了阻塞) ? ? ? ? ? ? ? ? ? ? ? ?3、增加延时(根据串口发送速率,接收到报头时延时) 三 关于LWIP? ? ?使用stm32F407VET开发板测试一下tcp服务器,发现连接hub时比较慢,后面连接后单独发送一下指令响应还是蛮快的。而且所需ram就是一两百K。这样的话使用UDP或TCP做一些简单应用应该不成问题。 四 添加UDP的两段代码 客户端代码
|
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:40:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |