2013-02-27 79 views
1

通信協議我有兩個程序,彼此通過TCP/IP通過交換命令和數據(連接已成功的)通信。我正在尋找一種協議,我可以通過它交換命令(ASCII)和二進制數據(float,double,int,char,wchar_t等)。標準字節用於數據傳輸

有一些標準是,我可以使用?還是應該創造我自己的協議來交換內容?

該程序是用C++和Qt。

+0

@ user1929959對不起,那不是我的問題。在交換字節時,我正在詢問一種在客戶端和服務器之間正確解釋數據的方法。 – 2013-02-27 10:49:04

回答

1
+0

謝謝你的回覆。 QDataStream盲目傳輸字節而不固定類型。我的問題是,客戶如何知道服務器發送的數據類型。有沒有一個已知的協議呢? – 2013-02-27 11:15:41

+0

@SamerAfach你真的需要發送類型嗎?例如,如果你發送了一些命令,你知道它是參數,你可以直接讀取這些類型。你能否證明你的需求? – kassak 2013-02-27 11:35:37

+0

我可能需要通過此連接發送單個或整數,雙精度,字符串或任何其他數組。另一方必須收到信息並正確解釋並存儲,並將其用於繪圖或任何其他任務。 – 2013-02-27 11:37:38

1

我會建議使用頭+數據來描述這些類型的消息。 在標題中你可以有例如一個消息類型字段,並根據其值可以投射數據的內容。 我認爲實施並不複雜。 當你有這個,你可以像這樣通過任何你想要的(例如QDataStream)

1

如果你使用Qt,this可能是有益的交換結構。

一般情況下,你應該選擇一個逐字節格式,然後進行序列化和反序列化到該對插座的兩側。否則,您最終會遇到操作系統(通常是32位與64位系統)之間的字節順序或大小不一的問題。