2014-11-04 114 views
0

我很困惑簡單的消息協議是如何工作的。我理解3次握手校驗和的基礎知識等等,但是從實現的角度來看,我怎麼知道我正在閱讀的是我應該閱讀的內容?簡單消息協議如何工作?

當我編程一個線程來讀取套接字的輸入流,有沒有任何保證?我發送的每條消息是否都有前面消息中描述的ID,因此我知道我正在接收它們?如何檢測何時錯過了一條消息(例如最後一條消息),以便我不會坐在那裏等待一條永遠不會到來的消息(我應該只使用簡單的超時)?

有關搜索內容的提示也會有所幫助!

回答

1

TCP套接字保證數據包進入正確的順序。如果您查看TCP數據包的標題,您會注意到它們有一個序列號。如果您正在通過UDP重新實現TCP,則需要自己提供一些這些功能。

您不應該需要檢測是否有錯誤消息(收到1和3但不是2)。

雖然插座可以意外關閉。如果一臺計算機脫機,那麼您將不會收到任何其他數據包,並且沒有時間發送警告。 Ping/Pong消息通常用於確保兩端仍在通信。超時是您的其他選擇。

你說的協議,如TCP(一個很好的低級讀取)?

或者你在建立一個聊天協議嗎? XMPP可能是一個很好的閱讀。