我已經試驗了兩個程序之間的異步TCP套接字消息,用於傳遞數據,數字和/或文本。我所做的是在每封郵件的開頭使用一個關鍵字,然後用「|」分隔這些值。字符。因此,一個消息可能是這樣的:如何分離TCP套接字消息
「數據| 490 | 40517.9328222222 | 1 | 6 | 11345 | 11347 | 11344 | 11345 | 106 | 40517.8494212963」
我設置讀取緩衝區大小爲1024,作爲最的消息將在這個長度內。但是有時我可能會發送很多短消息,其中幾個消息的長度小於1024個字符,看起來它會一次讀取。如果我發送超過1024個字符的消息,它將被拆分。所以我正在尋找一些關於如何處理這個問題的建議。我應該使用一些特殊字符來開始和/或結束每封郵件嗎?希望你對此有所建議。
謝謝!序列化意味着什麼?它適用於標準的Windows操作電腦嗎?有了你最後的評論,這是否意味着我應該根據收到的消息更改緩衝區大小?這將如何工作。由於消息的長度在消息已經被讀取之前是未知的,所以我不明白你的意思。順便說一句,是否有必要在發送方分解消息,還是不會影響性能?大小將是每200毫秒50個字符的消息,並且很少有50,000-400,000個字符的消息。 – bretddog 2010-12-06 11:27:59
序列化僅意味着「以字符串形式輸出」。 @terminus的建議將是一種合理的方式 - 將消息長度轉換爲固定長度的字符串,以便在接收端輕鬆轉換回'unsigned int'。您可以請求先將這麼多字節讀入一個固定大小的緩衝區,然後分配一個緩衝區來接收剩餘的消息。不要在發送端分割消息 - TCP/IP堆棧將執行任何所需的分組。 – 2010-12-06 12:28:51