0
我正在構建客戶端/服務器媒體應用程序供個人使用。該應用程序可以工作,但每個連接有兩個套接字:一個用於服務器/客戶端命令和通信(只是來回發送JSON字符串;另一個用於發送序列化介質。時尚,我知道哪些數據是什麼,或者是它更好地只是離開他們,因爲他們是如何實現多用途套接字協議?
我正在構建客戶端/服務器媒體應用程序供個人使用。該應用程序可以工作,但每個連接有兩個套接字:一個用於服務器/客戶端命令和通信(只是來回發送JSON字符串;另一個用於發送序列化介質。時尚,我知道哪些數據是什麼,或者是它更好地只是離開他們,因爲他們是如何實現多用途套接字協議?
您需要定義結構以您的郵件使用一個套接字同時例如:?
Message format:
Command,DataLen,Data
Example messages:
JSON,20,{ "text": "Hello!" }
CMD1:9:Some Data
這是使用逗號將數據長度與命令分開的「基於文本」格式,您可以使用一個二進制格式(這可能更容易解析和更強大),例如:
CommandLen(4-bytes):Command:DataLen(4-bytes):Data
@EvanTeran,brettw這是如何支持原始二進制流?據我所知,沒有辦法將原始二進制文件放入JSON字符串中。很明顯,我可以發送一條JSON消息,說'嗨,客戶希望xxx二進制數據',但是這不能解決消息/二進制數據同步問題。 – AedonEtLIRA 2012-03-01 17:57:06
如果我通過JSON編碼發送二進制數據,我可能會使用base64編碼。它很簡單,並且數據大小膨脹相對較小。 – 2012-03-01 18:11:45
@EvanTeran感謝您的建議。我做了一個簡單的Arrays.toString(byte []),然後再返回基準,並將其與Base64進行比較。你贏了。再次感謝,我不知道Bas64的史詩味道。 – AedonEtLIRA 2012-03-01 18:54:53