名称:TCP接收

符号:TCP_RECV

说明:

        当服务器与客户端之间成功建立连接后，可以通过TCP_RECV指令从指定套接字中获取远程主机发送的消息数据。

图片:

参数:

参数名称 | 数据类型 | IN/OUT | 参数作用 | 说明
--- | --- | --- | --- | ---
EXECUTE | BOOL | IN | 功能块触发 |
    上升沿触发指令执行
SOCKFD | DINT | IN | 套接字 |
    服务器或客户端套接字
DATA | REF_TO BYTE | IN | 存储首地址 |
    数据存储内存首地址（不可为空/NULL）
LENGTH | WORD | IN | 最大长度 |
    最大接收长度：1-1400，且不可大于DATA实际大小
BUSY | BOOL | OUT | 执行中 |
    TRUE：执行中
DONE | BOOL | OUT | 成功标志 |
    TRUE：执行完成
ERROR | BOOL | OUT | 出错标志 |
    TRUE：执行出错
ACTUALLEN | WORD | OUT | 接收长度 |
    接收到的数据的实际大小
ERRORID | WORD | OUT | 错误码 |
    0：正常；其它：错误码值

错误码:

错误码 | 说明
--- | ---
0 |
    无错误
4001H |
    客户逻辑取数据过慢，导致接收缓冲区内存不够
4002H |
    套接字号不是允许的范围
4004H |
    套接字没有连接

示例:

LD:

ST:

TCP_RECV_inst1( EXECUTE := ExecuteRecv1, SOCKFD := Sockfd1, DATA := REF(DataRecv_Client1), LENGTH := 10, BUSY => ISBUSY_Client1, DONE => DONE_Client1, ERROR => ISERROR_Client1, ACTUALLEN => ACTUALLEN_Client1, ERRORID => ERRORID_Client1);

解释:

          当“ExecuteRecv1”操作数的信号状态从“0”变为“1”时，执行该指令,把收到的数据存入“DataRecv_Client1”数组中。每检测到一个信号上升沿，就执行一次接收。当实际接收大小“ACTUALLEN_Client1”等于“10”时，表示接收完成，“DONE_Client1”输出状态会变“1”，否则“ISBUSY_Client1”输出状态为“1”，当发生错误的时候，“ISERROR_Client1”输出状态变为“1”，且“ERRORID_Client1”输出具体的错误码。