你如何实现多用途套接字协议?

时间:2012-03-01 00:01:46

标签: java io

我正在构建一个供个人使用的客户端/服务器媒体应用程序。该应用程序可以工作,但每个连接有两个套接字:一个用于服务器/客户端命令和通信(只是来回发送JSON字符串;另一个用于发送序列化媒体。

如何以一种我知道什么数据是什么的方式合并两个套接字,或者将它们保留为原样更好?

1 个答案:

答案 0 :(得分:2)

您需要为消息定义一个结构,以便为两者使用单个套接字。例如:

Message format:
  Command,DataLen,Data

Example messages:
  JSON,20,{ "text": "Hello!" }

  CMD1:9:Some Data

这是“基于文本”的格式,使用逗号将命令与数据长度分开,与数据分开。您可以使用二进制格式(可能更容易解析和更健壮),例如:

CommandLen(4-bytes):Command:DataLen(4-bytes):Data