【问题标题】:How to get flags returned by recvmsg() with recvfrom()如何使用 recvfrom() 获取 recvmsg() 返回的标志
【发布时间】:2013-04-08 08:04:37
【问题描述】:

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

有没有办法使用recvfrom() 来填充类似于recvmsg()msgheader

【问题讨论】:

  • recvmsg() 不是recvfrom() 的功能超集吗?我很确定如果您使用recvmsg(),您将在struct msghdr 结构中获得发件人地址。
  • 你是对的;如果您需要积分,是否愿意将其作为答案提交?

标签: linux sockets


【解决方案1】:

recvmsg()recvfrom() 的功能超集,就像recvfrom()recv() 的功能超集一样。换句话说,recvmsg() 是这三个功能中最强大的一个,其他两个可以做的所有事情,recvmsg() 也可以做。

特别是recvfrom() 的主要特点是它返回接收到的消息的发件人地址。当您使用 recvmsg() 时,可以获得相同的信息:查看 struct msghdrmsg_namemsg_namelen 元素。

【讨论】:

    猜你喜欢
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 2013-01-18
    • 2021-01-24
    相关资源
    最近更新 更多