我想接收数据(自定义类型,例如 CMYType)
我有以下代码;
using namespace boost::asio;
streambuf receivedStreamBuffer;
streambuf::mutable_buffers_type bufs;
bufs = receivedStreamBuffer.prepare( sizeof(CMYType) );
std::size_t length = read( *m_pReciver->ConSocket(),
buffer(bufs, sizeof(CMYType)),
transfer_all(),
ec);
关于如何将 receiveStreamBuffer 转换为 CMYType 类型的对象有什么想法吗?!
您的代码“可以”实际工作。然而,作为克里斯托夫 https://stackoverflow.com/users/3723423/christophe指出,有许多问题需要考虑。
TCP/IP 编程
在您的评论中,您提到您是 TCP/IP 编程的新手。我建议你仔细阅读《Beej 网络编程指南》 http://beej.us/guide/bgnet/。这是一个简短的介绍(大约 20 页),内容不错,几乎涵盖了网络编程的所有方面,包括以下内容。这是非常值得花时间的,而且是免费的。
字节序
这是网络通信的普遍基本问题。你绝对need如果您无法控制软件运行的机器,请处理它。或者如果您想要可移植的代码。你可以跳过这个仅当您完全确定通信的两台(所有)计算机都具有相同的体系结构时。
如果您需要了解更多问题,these http://betterexplained.com/articles/understanding-big-and-little-endian-byte-order/ three https://en.wikipedia.org/wiki/Endianness websites https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html都是很好的起点。
序列化
序列化既是问题的概括,也是解决上述问题的“灵丹妙药”(如果应用正确)。基本思想是将数据类型(结构)转换为“串行流”,可以通过任何通道(网络)传输并转换回您的类型。升压有一个序列化库 http://www.boost.org/doc/libs/1_59_0/libs/serialization/doc/index.html可以用于此目的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)