TCP控件
一.简介
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。不论是在计算机网络OSI模型中,还是在因特网协议族(Internet protocol suite)中,TCP层都可以发送用于网间传输的、用8位字节表示的数据流,并把数据流分区成适当长度的报文段。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验函数来检验数据是否有错误;在发送和接收时都要计算校验和。
简单来说,TCP提供了不同设备之间的网络连接。
提供了TCP输入的选择。可以连接到远程TCP端口,也可以接收传入的连接。
TCP的输出
提供TCP输出的选择。可以连接到远程TCP端口,接受传入的连接,或者回复从节点上的TCP接收到的消息。
只发送msg.payload。
如果msg.payload是一个包含二进制数据的Base64编码的字符串,Base64解码选项将使它在发送之前被转换回二进制。
如果msg._session(会话)不存在,payload会发送给所有连接的从机(或者说客户端)。
注意:在某些系统上,您可能需要root或管理员访问,以访问1024以下的端口。
我们的TCP案例使用C/S结构。即Client/Server (客户端/服务器) 结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销。
客户端和服务器的程序不同,用户的程序主要在客户端,服务器端主要提供数据管理、数据共享、数据及系统维护和并发控制等,客户端程序主要完成用户的具体的业务。
作为server的时候必须配置端口。
作为client的时候需指明server的IP和端口。
二.TCP作为客户端
1.为了方便演示,这里使用Tcp工具模拟一个Tcp的服务端
Node-red里我们实现一个应声虫的程序,即收到什么,就发什么。TCP in与TCP out节点各拖入一个。然后进行如下设置:
类型选择连接,表示node-red里运行的是客户端。客户端需要指明服务器的IP和端口,要与串口助手的设置一样。
设置完成以后,连线并部署。如果程序没有问题,可以看到TCP控件显示已连接。
在Tcp 测试工具中发送消息
在node-red内的调试窗口,可以看到debug节点打印出的调试信息内容也正确:
注
说明,node-red中的TCP控件作为客户端的通信成功了。特别说明一下,在C/S结构中,一个服务器可以对应多个客户端,即便是有多个客户端连接一个服务器,通信也是可以成功的。
三.TCP作为服务端
1.在tcp测试工具中新建一个客户端
Node-red里我们仍然编写应声虫的程序。拖入新的TCP in与TCP out节点,由于同一个IP与端口下只能有一个服务器,因此两个节点分别如下设置:
连线部署
部署成功后连接客户端 connections显示大于0说明连接成功
测试客户端发送数据
接收数据
显然已经可以通信了;此时,再打开一个串口助手,正确配置为client以后,也可以实现这些功能。因为一个服务器可以对应多个客户端。