TCP&UDP
指令列表 TCP&UDP函数用于进行TCP或UDP通信。
指令 | 功能 |
---|---|
TCPCreate | 创建TCP网络对象 |
TCPStart | 建立TCP连接 |
TCPRead | 接收TCP对端发送的数据 |
TCPWrite | 发送数据给TCP对端 |
TCPDestroy | 断开TCP连接并销毁socket对象 |
UDPCreate | 创建UDP网络对象 |
UDPRead | 接收UDP对端发送的数据 |
UDPWrite | 发送数据给UDP对端 |
TCPCreate
原型:
TCPCreate(isServer, IP, port)
描述:
创建TCP网络对象,仅可创建一个。
必选参数:
-
isServer:是否创建服务端。true:表示创建服务端;false:表示创建客户端。
-
IP:服务端IP地址。需与客户端IP地址在同一网段,且不冲突。创建服务端时为机械臂的IP地址,创建客户端时为对端的地址。
-
port:服务端端口。请勿使用下述已被系统占用的端口,会导致服务端创建失败。
- 7, 13, 22, 37, 139, 445, 502, 503(0 ~ 1024之间的端口是linux系统自定义端口,被占用可能性高,请尽量避免使用)
- 1501, 1502, 1503
- 4840, 8172, 9527, 11740
- 22000, 22001, 29999
- 30004, 30005, 30006
- 60000 ~ 65504, 65506, 65511 ~ 65515, 65521, 65522
返回:
- err: 0表示创建TCP网络对象成功 ,1表示创建TCP网络对象失败。
- socket:创建的socket对象。
示例1:
-- 创建TCP服务端。
local ip="192.168.5.1" -- 机械臂的IP地址作为服务端的IP地址
local port=6001 -- 服务端端口
local err=0
local socket=0
err, socket = TCPCreate(true, ip, port)
示例2:
-- 创建TCP客户端。
local ip="192.168.5.25" -- 外部设备如相机的IP地址作为服务端的IP地址
local port=6001 -- 服务端端口
local err=0
local socket=0
err, socket = TCPCreate(false, ip, port)
TCPStart
原型:
TCPStart(socket, timeout)
描述:
建立TCP连接。机械臂作为服务端时,等待客户端来连接;机械臂作为客户端时,主动连接服务端。
必选参数:
- socket:已创建的socket对象。
- timeout:等待超时时间,单位:秒。如果设置为0,会一直等待到连接建立成功;如果不为0,则超过设定的时间后返回连接失败。
返回:
-
连接结果。
- 0:连接成功
- 1:输入参数错误
- 2:socket对象不存在
- 3:设置超时时间错误
- 4:连接失败
示例:
-- 开始建立TCP连接,一直 等待直到连接建立成功。
err = TCPStart(socket, 0) -- socket为TCPCreate成功返回的socket对象
TCPRead
原型:
TCPRead(socket, timeout, type)
描述:
接收TCP对端发送的数据。
必选参数:
- socket:已创建的socket对象。
可选参数:
-
timeout:等待超时时间,单位:秒。如果不设置或设置为小于等于0的值,会一直等待直到读取完数据再往下执行;如果设为大于0的值,则超过设定的时间后会直接往下执行。
-
type:返回值类型。如果不设置或设置为"table",则RecBuf缓存格式为table形式;如果设置为“string”,则RecBuf缓存为字符串。
返回:
- err: 0表示接收数据成功 ,1表示接收数据失败。
- Recbuf:接收数据缓存区。
示例:
-- 接收TCP数据,接收的数据分别保存为字符串和table形式。
-- socket为TCPCreate成功返回的socket对象
err, RecBuf = TCPRead(socket,0,"string") -- RecBuf数据类型为字符串
err, RecBuf = TCPRead(socket, 0) -- RecBuf数据类型为table
TCPWrite
原型:
TCPWrite(socket, buf, timeout)
描述:
发送数据给TCP对端。
必选参数:
-
socket:已创建的socket对象。
-
buf:要发送的数据。
可选参数:
- timeout:等待超时时间,单位:秒。如果不设置或设置为0,会一直等待直到对端接收完数据再往下执行;如果不为0,则超过设定的时间后会直接往下执行。
返回:
- 发送结果。
- 0:发送成功。
- 1:发送失败
示例:
-- 发送TCP数据,数据内容为“test”。
TCPWrite(socket, "test") -- socket为TCPCreate成功返回的socket对象
TCPDestroy
原型:
TCPDestroy(socket)
描述:
断开TCP连接并销毁socket对象。
必选参数:
- socket:已创建的socket对象。
返回:
-
执行结果。
- 0:执行成功
- 1:执行失败
示例:
-- 断开与TCP对端的连接。
TCPDestroy(socket) -- socket为TCPCreate成功返回的socket对象
UDPCreate
原型:
UDPCreate(isServer, IP, port)
描述:
创建UDP网络对象,仅可创建一个。
必选参数:
- isServer:是否创建服务端。true:表示创建服务端;false:表示创建客户端。
- IP:创建服务端和客户端时都填写为对端IP地址。需与机械臂IP地址在同一网段,且不冲突。
- port: 创建服务端时,表示本端和对端都使用该端口。请勿使用已被系统占用的端口,详见TCPCreate的参数说明。 创建客户端时,表示对端的端口。此时本端发送数据时会使用随机端口。
返回:
- err: 0表示创建UDP网络对象成功 ,1表示创建UDP网络对象失败。
- socket:创建的socket对象。
示例1:
-- 创建UDP服务端。
local ip="192.168.5.25" -- 外部设备如相机的IP地址作为对端的IP地址
local port=6001 -- 本端和对端都使用该端口
local err=0
local socket=0
err, socket = UDPCreate(true, ip, port)
示例2:
-- 创建UDP客户端。
local ip="192.168.5.25" -- 外部设备如相机的IP地址作为对端的IP地址
local port=6001 -- 对端端口
local err=0
local socket=0
err, socket = UDPCreate(false, ip, port)
UDPRead
原型:
UDPRead(socket, timeout, type)
描述:
接收UDP对端发送的数据。
必选参数:
- socket:已创建的socket对象。
可选参数:
-
timeout:等待超时时间,单位:秒。如果不设置或设置为小于等于0的值,会一直等待直到读取完数据再往下执行;如果设为大于0的值,则超过设定的时间后会直接往下执行。
-
type:返回值类型。如果不设置或设置为"table",则RecBuf缓存格式为table形式;如果设置为“string”,则RecBuf缓存为字符串。
返回:
- err: 0表示接收数据成功 ,1表示接收数据失败。
- Recbuf:接收数据缓存区。
示例:
-- 接收UDP数据,接收的数据分别保存为字符串和table形式。
-- socket为UDPCreate成功返回的socket对象
err, RecBuf = UDPRead(socket,0,"string") -- RecBuf数据类型为字符串
err, RecBuf = UDPRead(socket, 0) -- RecBuf数据类型为table
UDPWrite
原型:
UDPWrite(socket, buf, timeout)
描述:
发送数据给UDP对端。
必选参数:
-
socket:已创建的socket对象。
-
buf:要发送的数据。
可选参数:
- timeout:等待超时时间,单位:秒。如果不设置或设置为0,会一直等待直到对端接收完数据再往下执行;如果不为0,则超过设定的时间后会直接往下执行。
返回:
-
发送结果。
- 0:发送成功。
- 1:发送失败
示例:
-- 发送UDP数据,数据内容为“test”。
UDPWrite(socket, "test") -- socket为UDPCreate成功返回的socket对象