1 回答

TA貢獻1816條經驗 獲得超6個贊
正如您在評論中提到的,HTTP 不是必需的。
在這種情況下,為了尋找最快的傳輸解決方案,我將完全放棄 HTTP 傳輸層,只使用普通 (TCP) 套接字連接,因為 HTTP 僅傳輸幾個字節就會產生相當大的開銷。
定義您自己的協議(這可能非常簡單),打開與服務器的 TCP 連接,并根據您的要求每隔幾秒左右發送一次數據包。
您發送(和接收)數據的協議可以很簡單:
進行可選的身份驗證或客戶端/服務器識別(以確保您連接到您想要的服務器/程序)。
使用
encoding/gob
標準庫中的packgae 通過連接以二進制形式發送數據。
所以基本上分析程序(客戶端)應該打開TCP連接,并使用gob.NewEncoder()
包裝連接來發送數據。服務器應接受傳入的 TCP 連接并用于gob.NewDecoder()
包裝連接以接收數據。
客戶端調用Encoder.Encode()
所以發送分析信息,它通??梢允且粋€結構值。服務器調用Decoder.Decode()
以接收分析信息,即客戶端發送的結構。就這樣。
使用encoding/gob
包以二進制形式發送數據要求您使用相同的類型來描述雙方的分析數據。如果您想要更大的靈活性,您還可以使用該encoding/json
包將分析信息作為 JSON 文本發送/接收。缺點是 JSON 需要發送更多數據,并且與二進制表示相比,生成和解析 JSON 文本需要更多時間。
如果丟失一些分析數據包(或接收重復數據)不是問題,您可能想要嘗試/實驗使用 UDP 而不是 TCP,這可能會更有效。
- 1 回答
- 0 關注
- 243 瀏覽
添加回答
舉報