我必须使用recvfrom()
从多个接口接收(在编译时未知,并且还需要保留消息的确切顺序,而不是使用单个系统调用依次从每个接口接收),但是我还需要访问只有recvmsg()
提供的一些标志(通过调用修改的消息头的flags
字段)。
有没有办法使用recvfrom()
来填充类似于msgheader
的{{1}}?
答案 0 :(得分:4)
recvmsg()
是recvfrom()
的功能超集,就像recvfrom()
是recv()
的功能超集一样。换句话说,recvmsg()
是三个函数中最强大的函数,您可以使用recvmsg()
对其他两个函数执行所有操作。
特别是,recvfrom()
的主要特征是它返回收到的消息的发送者的地址。使用recvmsg()
时可以使用相同的信息:查看msg_name
的{{1}}和msg_namelen
元素。