ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Node-Red Tcp控件使用

2021-12-31 17:31:57  阅读:237  来源: 互联网

标签:Node 控件 端口 TCP Tcp 服务器 连接 red 客户端


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以后,也可以实现这些功能。因为一个服务器可以对应多个客户端。

标签:Node,控件,端口,TCP,Tcp,服务器,连接,red,客户端
来源: https://blog.csdn.net/A_awen/article/details/122259676

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有