通信基础(网络层)

> 本文档描述了如何建立TCP网络通信以及通过TCP发送的数据的具体格式 ## 物理网络 优先考虑使用有线网络,在该项目阶段,无需进行实时音视频的实际传输,使用无线网络亦可。 ## TCP服务器/客户端 IP地址和端口 通信双方为由`未知数字`开发的UI交互系统、由`均胜`开发的多模交互系统,**约定** * `未知数字`侧系统作为TCP服务器 * `均胜`侧系统作为TCP客户端 TCP服务器IP由现场网络决定,**约定** * 优先使用固定IP地址:`192.168.100.100` TCP服务器通信端口,**约定** * 使用端口:20001 ## 数据帧(消息)格式 通信双方建立Socket通信后,以`消息(Message)`为单位,进行数据交换,每个`消息`为一个`JSON格式字符串`,`JSON格式字符串`举例: ```json { "id": "098aea35-77fb-4313-894b-3ce1e6861276", "ts": 1634875937, "tp": 0, "ev": 0, "da": { "message": "自定义数据" } } ``` **约定** * 使用字符编码:UTF-8 ## 数据报文格式 TCP协议为基于流的传输协议,在实际发送`消息`时,应当先将`消息`封装成`数据报文(datagram)`,然后才用Socket API发送`数据报文`。 报文结构如下图所示: ![image.png](https://cos.easydoc.net/12936675/files/kwwvmgmd.png) * 报文头部包含一个标识符`0xFE`表示报文开始 * 紧接着报文开始标识符是一个4字节的无符号整数(字节序为小端序),这个整数代表Body的长度(字节数) * 报文头部后面是报文体,报文体即为一个`消息`字符串编码(字符编码为UTF-8) * 报文尾部包含一个EOT字节