gpt4 book ai didi

linux - sendmsg() 中的辅助数据如何工作?

转载 作者:IT王子 更新时间:2023-10-29 01:17:04 31 4
gpt4 key购买 nike

sendmsg() 允许将辅助数据发送到另一个套接字,我想知道它是如何工作的。

1) 辅助数据是否与正常消息一起打包?

2) 如果是这样,远程接收套接字如何知道如何解析它?

3) 远程接收客户端如何检索这些辅助数据?

谢谢。

最佳答案

辅助数据不会在线发送 - 永远不会。对于 Unix 域套接字,辅助数据用于在进程之间发送或接收文件描述符以共享或负载平衡任务。注意:Unix 域套接字在同一台机器上运行的进程之间传输信息,而不是在不同机器上运行的进程之间传输信息。

同样,如果进程在不同的机器上运行:你的数据包不使用任何辅助概念将与在发送机器(或接收机器)上应用辅助概念时的数据包完全相同。因此,辅助数据不是随您的数据包一起提供的。

辅助数据用于接收从内核到用户空间应用程序的EXTRA数据包相关服务/信息,否则不可用。例如,假设机器 B 通过网络接收到一些数据包,您想知道数据包来自哪个入口接口(interface)?你怎么会知道这个?辅助数据来拯救。

辅助数据是在辅助控制缓冲区中设置的一种标志,并在调用 sendmsg()/recvmsg() 时传递给内核,它告诉内核当数据包发送或到达时,要提供哪些额外的服务/信息调用调用的应用程序。

辅助数据是内核和用户空间应用程序之间或同一台机器上的进程之间在 UNIX 套接字的情况下进行通信的方式。这不是电线上的数据包所具有的东西。

供您引用,下载代码示例here它在我的 ubuntu 机器上运行完美。辅助数据概念在 src/igmp_pkt_reciever.c 中演示。

关于linux - sendmsg() 中的辅助数据如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14128345/

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