如何使用recvfrom()获取recvmsg()返回的标志

时间:2013-04-08 08:04:37

标签: linux sockets

我必须使用recvfrom()从多个接口接收(在编译时未知,并且还需要保留消息的确切顺序,而不是使用单个系统调用依次从每个接口接收),但是我还需要访问只有recvmsg()提供的一些标志(通过调用修改的消息头的flags字段)。

有没有办法使用recvfrom()来填充类似于msgheader的{​​{1}}?

1 个答案:

答案 0 :(得分:4)

recvmsg()recvfrom()的功能超集,就像recvfrom()recv()的功能超集一样。换句话说,recvmsg()是三个函数中最强大的函数,您可以使用recvmsg()对其他两个函数执行所有操作。

特别是,recvfrom()的主要特征是它返回收到的消息的发送者的地址。使用recvmsg()时可以使用相同的信息:查看msg_name的{​​{1}}和msg_namelen元素。