ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# TCP配置 配置文件:`resources/application.yml` 文件 ```yml esd: port: tcp: host: 0.0.0.0 port: 8084 open_http_protocol: false open_websocket_protocol: false sock_type: 1 package_eof: '\r\n' open_eof_check: true pack_tool: 'ESD\Plugins\Pack\PackTool\StreamPack' ``` 之前也讲过,下划线和驼峰同样效果。偷懒用驼峰。 ### host TCP服务监听的主机名,0.0.0.0 标识服务器的任何地址 ### port TPC服务监听的端口 ### open_http_protocol TCP服务,此项需为false ### sock_type 1为TCP,与常量 `SWOOLE_SOCK_TCP` 相同。3为IPV6 TCP ,与常量`SWOOLE_SOCK_TCP6` 相同。 ### package_eof 与 `open_eof_check` 或者 `open_eof_split` 配合使用,设置EOF字符串。 ### open_eof_check 打开`EOF`检测,此选项将检测客户端连接发来的数据,当数据包结尾是指定的字符串时才会投递给Worker进程。否则会一直拼接数据包,直到超过缓存区或者超时才会中止。当出错时底层会认为是恶意连接,丢弃数据并强制关闭连接。 ### open_eof_split 启用`EOF`自动分包。当设置`open_eof_check`后,底层检测数据是否以特定的字符串结尾来进行数据缓冲。但默认只截取收到数据的末尾部分做对比。这时候可能会产生多条数据合并在一个包内。 ### pack_tool 解包、封包工具指定的类, 方法 `pack`封包,`unPack`解包;`encode`编码数据,`decode`解码数据。可根据范例写符合者目开发的包工具。 - `open_eof_check` 只检查接收数据的末尾是否为 `EOF`,因此它的性能最好,几乎没有消耗 - `open_eof_check` 无法解决多个数据包合并的问题,比如同时发送两条带有 `EOF` 的数据,底层可能会一次全部返回 - `open_eof_split` 会从左到右对数据进行逐字节对比,查找数据中的 `EOF` 进行分包,性能较差。但是每次只会返回一个数据包 参考文档: https://wiki.swoole.com/wiki/page/285.html https://wiki.swoole.com/wiki/page/286.html https://wiki.swoole.com/wiki/page/421.html