![](/img/trans.png)
[英]implementing client with custom xml protocol without definition or schema
[英]Implementing a client for custom TCP protocol
我必須實現一個客戶端,以便通過基於XML
格式的自定義協議與服務器進行通信。 這是基於TCP
的應用程序層協議。 因此,我的客戶發送請求XML
消息並接收響應,也就是XML消息。 現在,我考慮如何確保在開始解析之前收到完整的消息。
我看到兩個方法:
接收字節到某個魔術數字,這意味着消息結束。 對我來說,這是最好的方法,是嗎?
但是,可能沒有幻數,消息大小未知。 那情況呢? 我看到了一些其他協議的客戶端,並且看到了類似的東西。
while(true){ r = socket.read(buffer, offset, 1024); if(r < 1024) break; offset += r; } // parse buffer
而且我不確定是否還可以。 假定如果我們讀取的字節數少於1024個字節,則該消息已完成。 可以嗎
有什么推薦的解決方法?
在您的自定義協議中,您需要包括以下步驟:
客戶
服務器
讀取要從客戶端接收的塊數
在大小等於在步驟1讀取的數字的for循環內,開始接收預定義緩沖區大小的內容。
這樣,服務器在開始接收XML內容之前便知道實際內容有多少字節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.