1. 程式人生 > >Socket連線傳送資料的一點問題

Socket連線傳送資料的一點問題

問題

在使用socket實現客戶端和服務端通訊時,傳送資料的一點小bug,即有關“\n”傳輸的問題。

問題描述

在傳輸過程中我希望服務端將”\n”這種換行符包裹在傳送的資訊內一併傳送到客戶端,這樣可以省去在客戶端解析資料後再新增這些特殊符號的步驟,但是客戶端接收到的”\n”後面的資料被客戶端解析程式解析到下一段程式碼中,如下圖結果所示:

程式碼中StringUtil.SPLIT為分割符

sendMsg = StringUtil.BROADCAST+StringUtil.SPLIT+username+"\n"+StringUtil.SPLIT+msg;

解決

在debug時發現該問題後第一想法便是取消伺服器處理“\n”,改用客戶端處理輸出,服務端只發送基本的資料。操作後問題完美解決,顯示效果如下圖:

總結

1.設計服務端時應儘可能地減少服務端對不必要資料的計算,以節約伺服器資源服務更多的使用者。
2.在使用socket連線時,資料的傳送與接收儘可能地封裝那些最基礎的資料,針對轉譯字元之類的儘可能地避免。