在一条UDP消息中发送两个数据块,而不复制数据块
Sending two data blocks in one UDP message without copying the blocks?
我想通过我自己定义的my_message
:的UDP发送大量的消息对象
class my_message
{
private:
// Message header
header_type header;
// Message text
byte * data;
public:
...
}
但是,如果我发送这个类的实例,则头将与指针一起发送(而不是实际数据)。因此,琐碎的想法是在发送头和数据之前将它们复制到缓冲区中。
正如您所知,UDP操作的是消息而不是流,这意味着sendto()
和recvfrom()
之间存在1对1的关系。即不可能两次sendto()
并且在一个recvfrom()
中接收数据。
我的问题是:将数据复制到新的缓冲区会降低应用程序的效率。
可以考虑将发送拆分为发送标头和发送数据。这将不起作用,因为UDP消息在接收时没有排序。
我的问题:有没有一种方法可以通过从两个不同的来源读取消息来告诉应用程序sendto()
消息?
sendmsg采用iov,它允许您指定来自不同位置的数据,通过iov(IO Vector)结构发送到一个数据包中。
这可能就是你想要的。
相关文章:
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 如何使用发送数据包所花费的时间计算两个节点之间的距离?
- 在类 A 中创建类型为 B 类的向量 - 访问数据 [C++] [成员在两个类中都是私有的]
- 两个垫子的 OpenCV 数据是相同的,但使用 Mat::at 检索时的值已损坏
- 两个单独的类不共享相同的数据 C++
- 简单使用 std::atomic 在两个线程之间共享数据
- 如何在c ++中以一行(水平)打印两个文件的数据?如给定的.这两种形式来自两个不同的文本文件
- 将一个阵列中的数据存储到另外两个阵列中不起作用
- 如何复制只有两个迭代器的数据?
- 两个线程尝试将一些数据读/写到数据库中表的同一行中
- 如何将两个 jlong 数据类型转换为 jstring,然后将两个字符串连接在一起以便从 JNI 将字符串返回给 jav
- 如果两个线程调用同一个函数,但函数中的所有变量都是局部变量,我还需要担心线程之间共享数据吗?
- 首选数据结构,如果您有两个键并且无法使用Boost
- 两个QTableViews,两个模型和相同的数据
- 比较类的两个对象之间的数据
- 如何使用两个发布者的同一端口来使用 ZeroMQ 向同一订阅者发送数据?
- C++提取两个字符串之间的数据
- 添加两个矩阵会打印一列垃圾数据 c++
- 在C 中,如何有效地在两个类之间共享数据
- 数据的所有组合都是产品的两个整数