# TCP
## **概述**
TCP通讯协议在前置服务底层是基于Netty框架来实现的tcp的接入server和接出client,所有TCP协议的通讯配置基本就是Netty框架的参数配置。具体的参数根据业务需求配置接口,必填项都必须配置
## **配置概览图**
1. 接出配置图
![](https://img.kancloud.cn/5c/57/5c574651aaa80f5c7a41f43773227c8c_1586x591.png)
- 接出配置连接超时间
2. 接入配置图
![](https://img.kancloud.cn/8b/d6/8bd6ceb5d879047ef2932a7284ec92cb_1518x471.png)
- 接入需要配置线程池参数,启动接收线程
- 接入通讯协议都需要配置“是否启用”,只有处于启用状态的会被立即启用,否则在【接入服务节点】中手动启动
- “IP地址”输入的“0.0.0.0”表示该接入将监听前置系统机器的所有IP
## **接包规则**
接包规则是通讯接入在接收报文的规则配置,定义了如何接收到一个完整报文。主要规则有以下几种:字节长度标识,字符串长度标识,定长报文,结束符。
1. 字符串长度标识包含:报文最大长度,长度的数据起始位置,报文数据长度的字段长度,内容调整长度,跳过字节数
- 报文最大长度是限制接收数据的最大长度,超出部分不读取。
- 数据读取长度公式为:数据长度=起始位置+字段长度+标记长度+调整位置
- 标记长度:是报文数据长度的字段长度中约定的数据长度。
- 跳过字节数:跳过计算数据长度的前面N个字节,从N+1个字节开始读取数据,前面的“跳过字节数”个字节不会被当做报文传到前置流程中。
```
<pre class="calibre29">```
字节长度和字符串长度:【网络数据长度<span class="token">=</span>“长度的数据起始位置” <span class="token">+</span>“报文数据长度的字段长度”<span class="token">+</span>报文中标识的长度<span class="token">+</span>“内容调整长度”】
例如:网络通信中最前面<span class="token2">6</span>个字符表示报文长度,该长度包含长度<span class="token2">6</span>个字符本身,示例报文“<span class="token2">000022</span>ABCDEF0123456789”则需配置:
长度的数据起始位置 <span class="token">=</span> <span class="token2">0</span>
报文数据长度的字段长度 <span class="token">=</span> <span class="token2">6</span>
内容调整长度 <span class="token">=</span> <span class="token">-</span><span class="token2">6</span>
上述等式为: <span class="token2">22</span><span class="token">=</span><span class="token2">0</span><span class="token">+</span><span class="token2">6</span><span class="token">+</span><span class="token2">22</span><span class="token">+</span><span class="token1">(</span><span class="token">-</span><span class="token2">6</span><span class="token1">)</span>
```
```
2. 字符串长度标识与字节长度标识处理逻辑一致,只是一个是字符,一个是字符串。
3. 定长报文:设置定长报文总长度,超出部分不读取,。
4. 结束符:如接收到设置的结束符号“#”,标识读取结束。