gpt4 book ai didi

c++ - 如何从套接字读取中接收自定义数据类型?

转载 作者:太空狗 更新时间:2023-10-29 21:39:17 26 4
gpt4 key购买 nike

我想接收数据(自定义类型,比如 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);

知道如何将 receivedStreamBuffer 转换为 CMYType 类型的对象吗?!

最佳答案

您的代码“可以”实际工作。然而,作为Christophe指出,您需要考虑许多问题。

TCP/IP 编程

在您的评论中,您提到您是 TCP/IP 编程的新手。我建议您通读 "Beej's guide to network programming" .这是一篇简短(大约 20 页)且不错的介绍,涵盖了网络编程的几乎所有方面,包括以下内容。这是非常值得的,而且是免费的。

字节顺序

这是网络通信的一般基本问题。如果您无法控制软件运行的机器,您绝对需要处理它。或者,如果您想要可移植代码。仅当您绝对确定进行通信的两台(所有)机器都具有相同的体系结构时,您才可以跳过这个

如果您需要了解更多问题,these three websites是很好的起点。

序列化

序列化既是问题的泛化,也是解决上述问题(如果应用正确)的“ Elixir ”。基本思想是将您的数据类型(结构)转换为“串行流”,可以通过任何 channel (网络)传输并转换回您的类型。 Boost 有一个 serialization library可用于此目的。

关于c++ - 如何从套接字读取中接收自定义数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33328264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com