网口通讯(3) |
您所在的位置:网站首页 › 西门子tcp通讯报80A3重新链接两次又正常了 › 网口通讯(3) |
网口通讯(3)——LabVIEW平台下的TCP与UDP通讯
文章目录
网口通讯(3)——LabVIEW平台下的TCP与UDP通讯一、基础了解1、HTTP报文格式2、TCP/UDP协议2.1 基本概念2.2 数据格式与通信
二、LabVIEW平台使用TCP通讯范例程序解读延伸思考
Reference
引言:
网口通讯包含较多层次的协议,而LabVIEW已经对TCP/UDP协议通信底层的具体实现方法进行了高度的封装,因此对于LabVIEW使用者而言,只需简单了解TCP/UDP协议的规则,以便同其他平台交互或同人沟通,而在编程角度无需过多关心复杂的通信原理,即可快速建立LabVIEW平台下的通讯连接。 一、基础了解 1、HTTP报文格式报文概念 报文(message)是网络中交换与传输的数据单元,也是网络传输的单元。报文包含了将要发送的完整的数据信息,其长短不一,并在传输过程中会不断地封装成分组、包、帧来传输,封装的方式就是添加一些控制信息组成的首部,即报文头。 传输原理及过程 利用TCP/IP进行网络通信时,数据包会按照分层顺序与对方进行通信。 发送端从应用层往下走,接收端从链路层往上走。 从客户端到服务器的数据,每一帧数据的传输的顺序都为: 应用层->运输层->网络层->链路层->链路层->网络层->运输层->应用层。 以一个HTTP请求的传输为例,请求从HTTP客户端(如浏览器)和HTTP服务端应用的传输过程,如下图所示: 数据封装和分用 数据通过互联网传输的时候,需要加上特定标识,该过程即为数据的封装。 在数据使用的时候需去掉特定标识,去掉特定标识的过程就叫做分用。 TCP/IP协议的数据封装和分用过程,大致如下图所示: 在数据封装时,数据经过每个层都会打上该层特定标识,添加上头部。 数据封装和分用的过程大致为: 发送端每通过一层会增加该层的首部,接收端每通过一层则删除该层的首部。 原文链接:https://blog.csdn.net/stone_tmp/article/details/118386484 2、TCP/UDP协议 2.1 基本概念TCP (Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,提供超时重发,丢弃重复数据,检验数据,流量控制、全双工操作和多路复用等功能,保证数据能从一端传到另一端。同时,具有效率低,占用系统资源高的问题。 UDP(User Datagram Protocol)协议是用户数据包协议,是一个简单的面向数据报的传输层协议,不提供可靠性,只是把应用程序传给IP层的数据报发送出去,不能保证它们能到达目的地,因而传输速度快。 如果需要传输可靠性,则必须在用户应用程序中实现。 可见,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。 TCP支持的应用协议主要有:Telnet、FTP、SMTP等。 UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系 统)、TFTP(通用文件传输协议)等。 2.2 数据格式与通信(1)TCP协议 数据帧格式如下图: TCP连接是需要客户端和服务端达成三个信息的共识: Socket:IP地址 + 端口号序列号:用来解决乱序问题窗口大小:流量控制通信建立过程 TCP连接的建立时,双方需要经过三次握手。 TCP断开连接时,双方需要经过四次分手。 详细过程及相关疑问可参考:https://blog.csdn.net/stone_tmp/article/details/118386484 / 【网络通信】TCP的通信过程 - 知乎 (zhihu.com)/ TCP/IP协议详解 - 知乎 (zhihu.com)/【TCP通信】原理详解与编程实现(一)_如何使用tcp-CSDN博客 (2)UDP协议 UDP使用具有最小协议机制的简单无连接通信模型,是基于IP的简单协议,提供数据完整性的校验和,以及用于在数据报的源和目标寻址不同函数的端口号,因而应用程序可以通过增加确认和重传机制,自己实现可靠的数据传输。 数据格式如下: UDP只要知道对端的IP和端口号就可以发送,不需要实现建立连接。 应用层交给UDP多长的报文, UDP将原样发送既不会拆分,也不会合并,不能够灵活的控制读写数据的次数和数量。 UDP存在接收缓冲区,但不存在发送缓冲区 但是这个缓冲区不能保证UDP报文的顺序和发送UDP报的顺序一致,如果缓冲区满了后边的UDP数据报就会被丢弃。 UDP接收缓冲区和丢包问题:https://blog.csdn.net/ljh0302/article/details/49738191 UDP也是全双工通信。 UDP协议首部中有一个16位的大长度. 也就是说一个UDP能传输的报文长度是64K(包含UDP首部)。如果我们需要传输的数据超过64K, 就需要在应用层手动的分包发送, 并在接收端手动拼装。 二、LabVIEW平台使用TCP通讯LabVIEW平台提供了多种方法实现网络通信,如可以通过TCP协议、UDP协议、DataSocket技术、甚至远程面板通信技术等方式进行通信。而在工控领域,一般常基于TCP/UDP协议进行网口通讯控制,为此,对LabVIEW平台下先基于TCP/UDP协议的通讯方法进行说明记录。 函数选板 在LabVIEW中,已封装好TCP相关的操作函数,基于这些函数实现通讯。 对范例进行解析学习是快速理解和掌握LabVIEW使用方法的有效途径。 范例程序解读服务端程序框图如下: 客户端程序框图如下: 服务器端面板界面如下: 客户端面板界面如下(对比可见数据一致,收发可靠): 可就上述解析过程自行对比研究 解析收获 程序作用 实现基于LabVIEW的TCP协议下数据可靠收发 学到知识点 LabVIEW下的TCP数据收发用法规则,总结流程如下 服务器通过主机名或者IP地址与端口号,建立侦听,等待客户端连接客户端根据主机的IP地址和端口号发出连接请求服务器与客户端建立连接后,通过读/写函数进行TCP数据通信关闭连接各个子VI简单用法 侦听VI:用于本地主机,省略了地址,只需要端口号和超时设置(-1为永不超时) 写入VI:必须采用**字符串**格式数据 读取VI:需要设置读取字节数,输出相应大小的数据 打开连接:设置远程请求地址和端口(端口号必须对应服务器端保持一致且不为0) 关闭连接:完成数据收发需要关闭,并记得清除尾端错误信息 若服务器和客户机在同一台机子上运行时,客户端框图程序中输入的服务器地址可以设置为下面任意一个值:“localhost”、“127.0.0.1”、空字符串或者当前计算机的名称。 范例中通过先发送数据总字节数,再发送数据正文(读取也是)的方式保证数据准确可靠传输 提供了一种错误处理方法,保障连接中断后程序自行停止无报错 延伸思考 根据客户端程序在关闭连接时的标志反馈设计可以发现 实际数据传输过程中若明确数据大小,可直接进行进行数据读取,而不必先发送数据包大小(数据较小且长度固定时比较适用)同一个程序除单独读取或发送命令外,也可以同时作为对应的发送方或读取方,即一旦连接建立,同一程序或单端,均是“可读可写”的,体现了TCP的双工属性 对比协议内容理解程序逻辑: LabVIEW将TCP通信过程简化为打开连接(分为服务器等待连接和客户端请求连接两个部分)、传输数据和关闭连接三个过程,分别对应TCP协议中的握手、通信和分手LabVIEW大大简化了握手和分手流程,使用户只需使用封装好的连接或关闭VI即可通信过程中无需考虑或设置帧头,只需设置好地址与端口即可,说明至少在范例的标准模式下,子VI内部已设置好序号、确认号和标志位等,用户可专注于数据传输 循环中不同延时时间对数据传输的影响放到后边研究未曾深入研究代码底层逻辑的个人拙见,仅供参考 Reference 太棒了!TCP/IP协议 (图解+秒懂+史上最全)_图解tcpip-CSDN博客【TCP通信】原理详解与编程实现(一)_如何使用tcp-CSDN博客TCP/IP协议、HTTP协议、SOCKET通讯详解 - jking10 - 博客园 (cnblogs.com)网络通信总结(TCP/IP协议、HTTP协议等) - 知乎 (zhihu.com)【网络通信】TCP的通信过程 - 知乎 (zhihu.com)TCP/IP协议详解 - 知乎 (zhihu.com)TCP和UDP详解(非常详细)_tcpipudp-CSDN博客在LabVIEW平台中,你会编程实现TCP数据通信么? (baidu.com)LabVIEW-TCP通信-百度经验 (baidu.com)【LabVIEW开发】如何使用LabVIEW进行TCP通信? - 简书 (jianshu.com)LabVIEW中的基本TCP/IP通信 - NI【LabVIEW开发】如何使用UDP协议进行通信 - 简书 (jianshu.com)labview进行tcp通信设计简要教程 - 蜂鸟0256 - 博客园 (cnblogs.com)LabVIEW编程实例:如何通过TCP协议进行数据通信_labwindows的tcp-CSDN博客干货来了,跟我学LabVIEW中如何通过网口发送参数命令包 (baidu.com)les/4546393.html) LabVIEW编程实例:如何通过TCP协议进行数据通信_labwindows的tcp-CSDN博客干货来了,跟我学LabVIEW中如何通过网口发送参数命令包 (baidu.com) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |