gpt4 book ai didi

stream - 检测 TCP 流中的某个字符串(命令)

转载 作者:可可西里 更新时间:2023-11-01 02:46:45 27 4
gpt4 key购买 nike

我正在 TCP 之上开发一个协议(protocol)。我想知道在这种情况下检测控制消息的最佳方法是什么。示例:

客户端发送控制消息开始。服务器发送数据ABCD,然后发送控制消息END。客户端检测到END并关闭连接

问题是“END”可能会被分割。所以客户可能最终会读到 ABCDEN,然后是 D。在这种情况下,检测控制消息“END”的最佳方法是什么?

注意:服务器不知道它总共要发送多少字节!

最佳答案

TCP 是一个字节流,它没有消息边界的概念,所以你必须在你的协议(protocol)中分隔你的消息。消息的接收者然后可以查找定界符以了解一条消息的结束位置和下一条消息的开始位置。对于像您展示的基于文本的协议(protocol),CRLF(回车后跟换行符)是许多基于文本的 Internet 协议(protocol)中常用的分隔符,包括 HTTP、FTP、POP3、SMTP、 etc. 对于可变长度数据,如果不能提前发送数据大小,则仍然需要数据结束分隔符。在您的示例中,在数据之后发送 "\r\nEND\r\n" 将充当该分隔符。

关于stream - 检测 TCP 流中的某个字符串(命令),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26095378/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com