簡體   English   中英

為自定義TCP協議實現客戶端

[英]Implementing a client for custom TCP protocol

我必須實現一個客戶端,以便通過基於XML格式的自定義協議與服務器進行通信。 這是基於TCP的應用程序層協議。 因此,我的客戶發送請求XML消息並接收響應,也就是XML消息。 現在,我考慮如何確保在開始解析之前收到完整的消息。

我看到兩個方法:

  1. 接收字節到某個魔術數字,這意味着消息結束。 對我來說,這是最好的方法,是嗎?

  2. 但是,可能沒有幻數,消息大小未知。 那情況呢? 我看到了一些其他協議的客戶端,並且看到了類似的東西。

     while(true){ r = socket.read(buffer, offset, 1024); if(r < 1024) break; offset += r; } // parse buffer 

而且我不確定是否還可以。 假定如果我們讀取的字節數少於1024個字節,則該消息已完成。 可以嗎

有什么推薦的解決方法?

在您的自定義協議中,您需要包括以下步驟:

客戶

  1. 計算XML內容(即上限)的1024個字節塊的數量(XML內容字節/ 1024)
  2. 通過套接字將步驟1的編號發送到服務器
  3. 以定義的緩沖區大小(例如1024字節)的塊形式傳輸內容

服務器

  1. 讀取要從客戶端接收的塊數

  2. 在大小等於在步驟1讀取的數字的for循環內,開始接收預定義緩沖區大小的內容。

這樣,服務器在開始接收XML內容之前便知道實際內容有多少字節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM