如何通过套接字将数据作为XML传递?

时间:2009-12-18 08:38:59

标签: c++ c xml sockets

我希望在用C / C ++编写的套接字程序之间以XML schema的形式交换数据。有人可以提供链接教程,描述在套接字程序之间交换XML模式的过程。

我有两个在不同操作系统中运行的软件工具,其中我加上用c / c ++编写的套接字程序。由于两者都与XML一起工作,我想知道是否有一种简单的方法来交换XML文档形式的数据,以便进行模拟研究。

提前致谢。


问题是如何通过用C / C ++编写的套接字程序发送xml架构?这是一个exp:

----- xml ---
...
<xs:element name="zone">
<xs:complexType>
<xs:sequence>
<xs:element name="Var_name" type="xs:string"/>
<xs:element name="var_value" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>

------ C / C ++ ----
...
//向服务器发送消息
if(send(csocket,buffer_snd,BUFSIZE,0)&gt; BUFSIZE)
cout&lt;&lt; send()失败&lt;&lt; ENDL;
...

提前感谢您的帮助,

5 个答案:

答案 0 :(得分:2)

您可以考虑将XML解析库与流解析器一起使用,假设您可以依赖两端格式良好的文档 - 格式良好的XML是自定义的。像libxml2这样的东西应该是合适的。

答案 1 :(得分:2)

您希望在XML Schema中指定协议,然后自动生成允许您解析和序列化XML消息的C ++类。如果是这样,那么您可能需要查看CodeSynthesis XSD这是一个XML Schema to C ++编译器。它几乎完全符合您的要求。如果你想要一个更轻量级的版本,还有XSD / e更适合移动/嵌入式开发。

答案 2 :(得分:1)

显然,gSOAP包含相关代码,但不确定这是否是您正在寻找的内容。

答案 3 :(得分:0)

看看HTTP如何做到这一点 - 简单的标头,指示后面的有效负载的长度,加上一些额外的,如时间戳和类型。所有你需要告诉另一方是从套接字读取多少字节,也许是文件名。您可能还希望根据应用程序的需要向发件人实施确认。

答案 4 :(得分:0)

你可以使用expact library,这是一个很好的xml解析器,它可以创建xml对象并可以发送