[英]What is the most effective way to minimize data for transfer over UDP?
我沒有太多的細節,所以我很抱歉這個問題很愚蠢。
我對套接字有一些經驗,通常用於傳輸少量的純文本。 但是這次,我必須傳輸更多的數據,以便能夠通過UDP進行分解。
我正在開發一個游戲,其中的服務器是用Java編寫的,我想將對象數組發送給客戶端。 由於我是一名Web開發人員,因此JSON是傳輸數據時彈出的第一件事,盡管我高度懷疑這是聯網中最有效的方法。
如果是JSON:
{
"players": [
{
"id": "884B0EAA2C7F16BA", // hex string
"name": "some guy", // string
"x": 0, // double
"y": 0, // double
"xv": 0, // double
"yv": 0, // double
"angle": 0, // double
}, {
"id": "AB61F7C2AAE0B488", // hex string
"name": "some other guy", // string
"x": 0, // double
"y": 0, // double
"xv": 0, // double
"yv": 0, // double
"angle": 0, // double
}
]
}
現在,我可以添加一個自定義分隔符以按玩家分割數據,並添加另一個分隔符以分割數據。 在我的光學系統中,最有效的方法之一是每行放置播放器的值,並在這些值之間放置預定義的字符序列。
884B0EAA2C7F16BA[|]some guy[|]0[|]0[|]0[|]0[|]0
AB61F7C2AAE0B488[|]some other guy[|]0[|]0[|]0[|]0[|]0
盡管這對我有用,但名稱等仍存在一些安全隱患。 我很難告訴客戶包含“ [|]”的顯示名稱是非法的。
最小化傳輸數據的最有效方法是什么?
任何有關加密的其他信息將不勝感激!
考慮使用Google協議緩沖區。 您定義一條消息(在.proto文件中),它會以不同的編程語言為您生成代碼。
這樣,生成的代碼便能夠對消息進行編碼/解碼,而無需您考慮數據的編碼方式。
編碼的消息將非常小,並且編碼/解碼非常快。 協議緩沖區確實擅長於此。
網站上有一些很好的文檔: https : //developers.google.com/protocol-buffers/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.