我正在尝试使用C通过sendmsg发送原始以太网数据包。此代码成功打开原始数据包套接字,尝试用单个字节数组(charmessage[])填充structiovec,然后用目标地址、地址长度和指向包含以下内容的structiovec的指针填充structmsghdr消息。sendmsg()为每次调用返回EINVAL,但我不知道哪些参数无效。(我删除了一些perror()调用以使这段代码更易于阅读;输出是“无效参数”。)我还没有找到任何关于sendmsg()如何与原始套接字一起工作的示例,但是使用sendto()的类似代码可以按预期工作。在该代码中,我显式地形成了以太网帧,包括header