tcp套接字数据以xml数据包的形式发送
tcp socket data send in xml packet
我正试图通过tcp套接字发送一些数据。现在的问题是,我不需要发送简单的char*数据,而是需要缓冲一些数据,并在那里创建一个xml数据包结构,从而通过网络发送xml数据。例如,我有一个ini文件,用于将所有数据读取到相应的变量中。比如:
[Device data ini]
DeviceID = 0042
Manufacturer = Company Name
VendorID = 00-291-647
Timestamp = 2014-08-13 12:40:11
现在我需要用上面的数据制作xml,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<DataBlock xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DeviceID>0042</Device>
<Manufacturer>Company Name</Manufacturer>
<VendorID>00-291-647</VendorID>
<TimeStamp>2014-08-13 12:40:11</TimeStamp>
</DataBlock>
并将这些完整的数据作为char*发送到服务器。从简单的char*数据结构构建xml数据包的最佳方法是什么。代码将用c++编写,xml将在服务器端使用c#代码进行解析。任何建议或建议都会很有帮助。
使用任何C++标记器来拆分输入/源数据,以便分别处理每一行(使用rn
作为分隔符)。例如,您可以使用boost::split
来执行此操作。之后,对于每一行,使用相同的技术提取关键字和值(使用=
作为分隔符)。您可以将解析后的键和值放入std::map
中,因为下一步需要它们。最后一步-简单地使用解析的数据格式化目标xml字符串。要做到这一点,您需要遍历map元素并格式化结果字符串。您还可以为每个属性使用带有占位符的XML模板字符串,并将其替换为已解析的值。
我建议首先将数据转换为XML不是一个好方法,除非它非常重要或别无选择。这样做的原因是,在格式化XML中的值时,会增加要通过网络发送的字节数。相反,更好的方法是将值发送到另一端,并在移交给C#之前将其转换为XML。您可以使用结构方法进行发送和接收。
相关文章:
- 通过套接字发送的自定义数据包
- 使用 UDP 协议从 Windows 套接字发送到 Qt 套接字的网络数据包上的结构编码和解码
- C++ - 构造带有标头的数据包并通过 UDP 套接字发送
- SFML 套接字 发送数据包时设置为 sf::套接字::错误
- 为什么TCP套接字在接收到不正确的ACK时发送RST数据包而不是重新发送数据
- 是否可以在数据报套接字中同时用于发送和接收
- 使用boost::asio将序列化数据写入套接字
- 使用c++套接字编程的最大TCP数据包大小
- 哪些 IO 操作会导致在使用套接字时将完成数据包发送到完成端口
- 套接字接收流在接收 FIN 数据包时是否会关闭
- 如何在使用WSARecv()和IOCP时知道套接字何时接收到FIN数据包
- 使用SFML TCP套接字和数据包破坏文件
- 在 Linux 原始套接字中接收完全修改的 icmp 数据包
- 用于数据包注入的 Libnet 与原始套接字
- UDP 数据报套接字编程,服务器在 JAVA 中,客户端在 C++
- 具有多个逻辑数据流的单个套接字连接(区分数据包)
- 通过原始套接字接收"syn"数据包时,如何使用"syn ack"数据包进行响应?
- 如何在WinSock2中的DGRAM套接字上获取传入数据包的IP地址
- Unix数据报套接字仅适用于第一帧
- 如何立即写入数据到套接字,而不使用flush和waitFOrBytesWritten与QTCPSocket