简单消息协议如何工作?

简单消息协议如何工作?

问题描述:

我很困惑简单的消息协议是如何工作的。我理解3次握手校验和的基础知识等等,但是从实现的角度来看,我怎么知道我正在阅读的是我应该阅读的内容?简单消息协议如何工作?

当我编程一个线程来读取套接字的输入流,有没有任何保证?我发送的每条消息是否都有前面消息中描述的ID,因此我知道我正在接收它们?如何检测何时错过了一条消息(例如最后一条消息),以便我不会坐在那里等待一条永远不会到来的消息(我应该只使用简单的超时)?

有关搜索内容的提示也会有所帮助!

TCP套接字保证数据包进入正确的顺序。如果您查看TCP数据包的标题,您会注意到它们有一个序列号。如果您正在通过UDP重新实现TCP,则需要自己提供一些这些功能。

您不应该需要检测是否有错误消息(收到1和3但不是2)。

虽然插座可以意外关闭。如果一台计算机脱机,那么您将不会收到任何其他数据包,并且没有时间发送警告。 Ping/Pong消息通常用于确保两端仍在通信。超时是您的其他选择。

你说的协议,如TCP(一个很好的低级读取)?

或者你在建立一个聊天协议吗? XMPP可能是一个很好的阅读。