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



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

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

问题是"END"可能是分散的。因此,客户端最终可能会阅读ABCDEN,然后阅读D。在这种情况下,检测控制消息"END"的最佳方式是什么?

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

TCP是一个字节流,它没有消息边界的概念,因此您必须在协议中定义消息。然后,消息的接收者可以查找分隔符,以知道一条消息在哪里结束,下一条消息从哪里开始。对于您所展示的基于文本的协议,CRLF(回车后接换行符)是许多基于文本的互联网协议中常用的分隔符,包括HTTP、FTP、POP3、SMTP等。在可变长度数据的情况下,如果不能提前发送数据大小,则仍需要数据结束分隔符。在您的示例中,在数据之后发送"rnENDrn"将充当该分隔符。

相关内容

  • 没有找到相关文章

最新更新