通过套接字将对象(XML输出或任何c++对象类型)从服务器传递到客户机,反之亦然

Passing objects (either XML output, or any C++ object types) from server to clients and vice versa through sockets

本文关键字:对象 服务器 反之亦然 客户机 类型 c++ 套接字 XML 任何 输出      更新时间:2023-10-16

如何通过套接字在c++中传递XML输出结果/其他对象类型,并确保数据不损坏?输出大小可以在100KB - 2MB之间。UNIX sys/socket库只允许我将基本数据类型(如字符串)作为socket消息发送。

我知道Boost iso库也是一个很好的套接字编程库,但我不确定它是否允许我通过套接字发送XML输出/对象类型。速度/性能是一个主要问题,我的服务器打算有多个客户端连接到它。对如何处理这个问题有什么想法/担忧吗?你有一些现有的例子代码,做同样的事情:通过c++套接字发送对象数据类型?你能解释一下你采用的方法吗?一些示例代码/伪代码确实会很有帮助。

如果要检查接收到的数据是否正确,应该使用CRC或其他错误检测编码。然而,套接字试图保证它,您可以放心地再次检查数据。同样在网络传输中,速度和可靠性是需要权衡的,你应该根据你的应用在两者之间做出取舍。

第二,对于发送数据对象,您需要的是封送或序列化。您可以在发送数据对象之前封送数据对象,并在另一端接收数据对象时创建数据对象。你可以用你自己的协议来做,或者你可以使用现成的库。

将数据对象封送为XML的一个实践是这样的。(注意:我没有测试它自己)