CommonTCPClient 通用TCP客户端

CommonTCPClient 算子用于启动一个 TCP 客户端,向服务端发送连接请求,建立连接后自动发送字符串信息。

CommonTCPClient 算子介绍视频教程

算子参数

  • 主机地址/host:申请访问的 TCP server 服务器的 ip 地址。默认为 localhost ,即本机访问 。

说明:Windows 版本默认为127.0.0.1 ,即本机访问 。

  • 端口/port:申请访问的 TCP server 服务器的服务端口。默认值:2015。

  • 客户端模式/client_mode:运行模式。

    • Once:该算子每次被触发,都会先同TCP服务端建立链接再发送消息请求,获得回复后直接断开链接。

    • Continous:每次触发算子运行,不会建立新的链接,而是在第一次链接的基础上继续发送消息请求。

  • 分隔符/delimiter:消息结束符,包含 RT 换行符 、“;”、“#”、“$”。当选择了其中某一种时,另外三种就会被视作普通字符随意使用 。客户端在接收服务端的回复消息时,会捕获第一个消息结束符之前的所有消息。

    注意:由于不同的通信软件、电脑系统软件、机器人操作系统软件对回车换行的定义不一致,一般不建议选择RT作为消息结束符。

  • 只发送模式/only_send:只发送模式。

    • True:向服务器发送信息后,服务器不需要回复。

    • False:向服务器发送信息后,服务器需要回复,否则报错。

  • 发送消息/send_message:向服务端发送的字符串内容。同输入端口 send_message 的作用一致。当输入端口 send_message 没有连接时,则必须给该send_message 参数赋值。

    注意:在算子运行后,重新更改了port 、 client_mode 、delimiter 中的任意一个之后,如果需要生效,都必须重启 RVS 。

数据信号输入输出

输入:

  • send_message

    • 数据类型:String

    • 输入内容:向服务端发送的字符串内容

功能演示

使用两个 RVS 窗口,一个建立TCP服务端,另一个建立TCP客户端,实现一次连接通信。

注意:可以在一个 RVS 软件界面中同时建立服务端和建立客户端,但不允许两者之间建立链接、发送申请。

步骤1:算子准备

添加 Trigger、TestTCPServer 、CommonTCPClient 算子至算子图。

步骤2:设置算子参数

RVS 软件界面1:

  1. 设置 Trigger 算子参数:

    • 算子名称 → InitTrigger

    • 类型 → InitTrigger

  2. 设置 TestTCPServer 算子参数:

    • 端口 → 2015

    • 连接数量 → 2

    • 服务器模式 → Once

    • 分隔符 → #

    • 回复消息 → OK$

RVS 软件界面2:

  1. 设置 Trigger 算子参数:

    • 类型 → Trigger

  2. 设置 CommonTCPClient 算子参数:

    • 主机地址 → localhost

    • 端口 → 2015

    • 客户端模式 → Once

    • 分隔符 → $

    • 发送消息 → test#

步骤3:连接算子

  1. 打开第一个RVS软件界面,算子连接如下图所示。

    Communication_CommonTCPClient_nodes1

  2. 重新打开一个 RVS 软件界面,算子连接如下图所示。

    Communication_CommonTCPClient_nodes2

步骤4:运行

分别点击两个 RVS 软件的运行按钮。

运行结果

  1. 其中 TestTCPServer 算子所在的 XML 会自动运行一次 trigger( type 为 InitTrigger ),此时会自动触发 TestTCPServer 算子完成第一次的初始化运行,运行成功后界面显示如下图,表示 TCP 的服务端已经建立完毕。

    Communication_CommonTCPClient_result1

  2. 在 CommonTCPClient 算子所在的 RVS 手动触发一次 Trigger 算子,运行结果如下图所示。

    Communication_CommonTCPClient_result2

  3. 同时 TestTCPServer 算子所在的 RVS 也会有日志打印,如下所示。观察下方日志,发现 TestTCPServer 算子接收到的消息并不是 CommonTCPClient 算子发送的 test# ,而是 test#$ ,即 CommonTCPClient 算子实际发送时会自动给发送消息的末尾添加上自己的字符结束符。

    Communication_CommonTCPClient_log