c - 通过 TCP/IP 套接字的 XML 消息

标签 c xml sockets connection parsing

我正在使用 C,想知道就通过套接字连接进行通信而言,XML 消息是否优于文本消息?

  1. 除了使用 XML 之外,还有其他更好的选择吗?
  2. 用 C 解析 XML 的最佳解析器(或解析选项)是什么?
  3. 有没有C自带的标准库帮助解析XML消息?

最佳答案

  1. 协议(protocol)由您设计,由您决定。您可以使用文本或二进制通信。无论您使用什么格式,您都可以决定如何序列化/反序列化和解释数据。如果您使用 XML,则可以利用 XMLRPC 或 SOAP。您也可以使用 JSONRPC。上次在我的项目中,我以一种非常简单而有效的方式使用二进制:首先确定要调用的方法/函数。接下来的 2 个字节用于通知数据的长度(最多 64K - 1 个字节),其余为数据。注意大/小字节序。

  2. 这是非常主观的。您可以使用验证或非验证解析器。 TinyXML 是轻量级的。您可以查看 MiniXML 和 Expat。 libxml2 更胖。

  3. 到目前为止,XML 解析不在 C 或 C++ 的标准库中。您可以使用上述库。

祝你好运!

编辑:

顺便说一句,如果你想使用二进制格式来交换数据,只需使用这 3 个中的任何一个:

  1. http://tpl.sourceforge.net/ - C 序列化库。

  2. http://www.s11n.net/c11n/ - 一个强大而复杂的 C 序列化库。

  3. 西塞里亚 - http://sourceforge.net/projects/siseria/ ,纯 C。我为一个嵌入式系统项目编写。它运行时没有任何依赖,而且速度非常快!与其他2相比,我的非常简单,根本不使用堆和动态内存。一切都在堆栈上!

关于c - 通过 TCP/IP 套接字的 XML 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1994437/

相关文章:

android - getaddrinfo() 在 Android 中失败?

c++ - C/C++ : Write and Read Sockets

java - 将java流切换为密码流

c - 如何找出用于构建二进制文件的 *.c 和 *.h 文件?

c - 在 C 中将数字作为字符串相加

xml - <![CDATA[<![CDATA[some text]]]]><![CDATA[>]]> 在 XML 中是什么意思?

javascript xml保存问题

c - 所有正在运行的进程列表

c - 如何使用特定的返回地址溢出缓冲区?

xml - XSLT 函数格式-数字不显示零