[英]XML messages over a TCP/IP socket
我正在使用C,想知道就套接字连接通信而言,XML消息是否比文本消息更可取?
您设计协议,以便您决定。 您可以使用文本或二进制通信。 无论使用哪种格式,您都可以决定如何序列化/反序列化和解释数据。 如果使用XML,则可以利用XMLRPC或SOAP。 您也可以使用JSONRPC。 上一次在我的项目中,我以一种非常简单而有效的方式使用了二进制文件:第一个标识要调用的方法/函数。 接下来的2个字节用于通知数据长度(最大64K-1个字节),其余为数据。 注意大/小耐力。
这是非常主观的。 您可以使用验证或非验证解析器。 TinyXML是轻量级的。 您可以研究MiniXML和Expat。 libxml2更胖。
到目前为止,XML解析不在C或C ++的标准库中。 您可以使用上述库。
祝好运!
编辑:
顺便说一句,如果您想使用二进制格式交换数据,则只需使用以下3种方法之一:
http://www.s11n.net/c11n/-一个强大而复杂的C序列化库。
Siseria- http://sourceforge.net/projects/siseria/ ,纯粹是用C语言编写的。我写的是一个嵌入式系统项目。 它运行没有任何依赖性,并且非常快! 与其他2相比,我的非常简单,根本不使用堆和动态内存。 一切都在堆栈中!
有许多可能的解决方案。 我认为在选择XML之前,我会考虑其他一些选择。 XML有很多开销。 除非您要压缩流,否则可能会有点昂贵。 XML对于人类来说也不容易编辑,尽管当然比二进制格式更难。
您可能想看看JSON ,它是一种非常流行的格式,并且比XML简单得多。 有很多可用的实现。
我强烈推荐Google的数据交换格式Protobuf 。 我们正在使用它在两个进程之间进行通信,效果很好。 它内置了对C ++,Python和Java的支持,并为其他许多库提供了第三方库(Jon Skeet维护C#端口)。
主要问题是您对性能的要求是什么。
如果您打算每秒发送一条消息,请放心。 如果一端具有人机界面,请使用XML或任何其他文本格式。
如果设计机器对机器的接口,则宁愿考虑二进制数据。 在这种情况下,请记住将所有内容转换为网络标准字节顺序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.