Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
组合多个变量以作为udp数据包发送 我需要在C++中通过UDP连接发送一个数据包。我需要发送的第一条消息由两个32位整数和一个64位整数组成。将多个变量类型组合成一个数据块以便通过UDP连接发送的最佳方法是什么?_C++_Variables_Udp - Fatal编程技术网

组合多个变量以作为udp数据包发送 我需要在C++中通过UDP连接发送一个数据包。我需要发送的第一条消息由两个32位整数和一个64位整数组成。将多个变量类型组合成一个数据块以便通过UDP连接发送的最佳方法是什么?

组合多个变量以作为udp数据包发送 我需要在C++中通过UDP连接发送一个数据包。我需要发送的第一条消息由两个32位整数和一个64位整数组成。将多个变量类型组合成一个数据块以便通过UDP连接发送的最佳方法是什么?,c++,variables,udp,C++,Variables,Udp,这取决于您的网络要求。你在乎持久性吗?如果你这样做了,你就不应该只使用任何连续体,而应该使用一个安全的连续体 通常,通过网络发送的每个类/结构都应该有特殊的方法或重载运算符来流式输入和输出它们。最终,您必须使用诸如hton/ntoh之类的宏/函数来处理流基本类型,例如int、int64、float、double等 Upd:另外,如果您的网络端点应用程序在不同的平台/编译器上运行,您可能会有不同大小的int、long、short等。因此,在序列化时,您必须将整数转换为一些预定义类型,并保证在所有支

这取决于您的网络要求。你在乎持久性吗?如果你这样做了,你就不应该只使用任何连续体,而应该使用一个安全的连续体

通常,通过网络发送的每个类/结构都应该有特殊的方法或重载运算符来流式输入和输出它们。最终,您必须使用诸如hton/ntoh之类的宏/函数来处理流基本类型,例如int、int64、float、double等


Upd:另外,如果您的网络端点应用程序在不同的平台/编译器上运行,您可能会有不同大小的int、long、short等。因此,在序列化时,您必须将整数转换为一些预定义类型,并保证在所有支持的平台上大小相同。

我用C手工编写了一个DNS解析器,而structs确实是我做这件事的方式。使用位字段指定每个工件的尺寸。有关位字段的详细信息:

确保使用hton/ntoh处理字节顺序。这里有更多信息


事实上,仔细阅读beej的指南——那里有很多有用的信息

我听说
struct
class
最近很流行。序列化是你的朋友。协议缓冲区、thrift、messagepack等等……那么……我会按顺序创建一个包含变量的类/结构,然后使用类似boost序列化的方法将其转换为二进制消息吗?