我正在搜索很多,但我找不到任何资源通过建立自己的协议,使用TCP作为传输层。
有什么必要的步骤?
协议应该是设备的某种“控制协议”。所以我可以向设备发送命令并控制它们并获取信息。
那么如何实现自定义协议呢?这完全是关于defininig what
命令可以发送和 how
接收器对不同的命令作出反应?假设我正在定义一些自定义命令 xml
使用tcp通过有线/空中发送它们,并在那里有一些逻辑,它们对发送的命令作出反应并回复。这是一种可以实现“协议”的方式吗?这甚至被称为“协议”吗?
亲切的问候。
只要您可以为通过TCP套接字发送的数据编写规范,就可以拥有自己的协议。
它主要是关于定义命令和有效负载。您必须先将命令包序列化,然后才能通过TCP。如果打包,则字节顺序是一个常见的陷阱 二进制格式。 XML和JSON很常见 基于文本 数据交换格式。就个人而言,我是亲JSON。
请参考 BSON, MessagePack 要么 protobuf的 用于二进制序列化。他们打包了 类型 数据为二进制,因此它们比基于文本的序列化具有更好的类型检查,并且尺寸更紧凑。它们还处理字节序转换,数据包版本控制并提供各种语言的驱动程序/绑定。服务器和客户端可能是用不同的语言编写的。
编辑:添加RFC示例
看到Ross Patterson的评论,我还建议阅读RFC以获取协议定义参考。 RTSP 和 HTTP 是文本协议, RTP 和媒体格式(MPEG4 AV, H-264)是二进制协议。
编辑:
用Todd Montgomery揭开协议和序列化性能的神秘面纱