struct ip ipHeader;
我想在实际数据前附加,这是
string data;
这样我就可以通过send
函数将其发送到一个数据包中,该函数接收一个char *缓冲区。我将如何尝试连接这些?我需要附加此ipHeader,因为它是一个自定义标头,与发送邮件时自动附加的UDP标头不同。
编辑*澄清一下,我需要在发送时附加此标头以及附加的UDP标头。因此,SOCK_RAW不一定是我需要/想要的。
答案 0 :(得分:0)
为了将两个数据作为单个数据包发送,您有两个主要选择:
writev()
(WSASend()
。)第二种方法很有吸引力,因为它似乎是为你正在做的事情而设计的:一次发送两个(或更多)缓冲区。但是在我自己的测试中,它实际上并不比第一种方法更快(在Linux上)。
最快最简单的解决方案通常是从头开始简单地将标头嵌入数据中。因此,无论何时分配消息,都应在开始时为标题添加空间。然后,您可以使用“placement new”来调用标头构造函数(如果有),或者只是分配其字段。