我必须使用 recvfrom()
从多个接口(interface)接收(在编译时未知,并且还需要保留消息的确切顺序,而不是使用单独的系统调用从每个接口(interface)接收反过来),但我还需要访问一些只有 recvmsg()
提供的标志(通过调用修改的消息 header 的 flags
字段)。
有没有办法使用recvfrom()
来填充一个类似于recvmsg()
的msgheader
?
最佳答案
recvmsg()
是 recvfrom()
的功能超集,就像 recvfrom()
是 recv 的功能超集一样()
。换句话说,recvmsg()
是三个函数中最强大的,您可以用其他两个函数做的所有事情您也可以用 recvmsg()
做。
特别是,recvfrom()
的主要功能是它返回所接收消息的发件人地址。当您使用 recvmsg()
时可以获得相同的信息:查看 struct msghdr
的 msg_name
和 msg_namelen
元素>.
关于linux - 如何使用 recvfrom() 获取 recvmsg() 返回的标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15874145/