【问题标题】:Getting message destination address - socket C获取消息目标地址 - 套接字 C
【发布时间】:2011-03-16 12:58:48
【问题描述】:

我有多个进程 UDP 多播到彼此的消息。我正在使用 recvfrom() 来读取传入的消息。有没有办法找出消息的目标地址,类似于在 recvfrom 中获取“发件人”地址?我认为这样我可以区分发送到组的消息和发送到特定进程的消息。一切都是 Unix/Linux 和 C。谢谢。

【问题讨论】:

  • 多播地址不都是组地址吗?我看不出您如何将它们用于特定目的地。
  • “发送到组的消息”和“发送到特定进程”有什么区别?这对你意味着什么?

标签: c sockets udp


【解决方案1】:

您已经询问过通用套接字编程,但如果您使用的是 Windows,您可能可以让 WSARecvMsg 为您工作。收到数据报后,WSARecvMsg 将为您提供一个 WSAMSG 结构,其中 dwFlags 成员将酌情包括 MSG_MCAST 或 MSGBCAST。在其他平台上,您也许可以找到类似的东西。但是,它对于套接字来说是低级的,所以我不会很乐观。希望比我更了解情况的人可以帮助您!

【讨论】:

  • 谢谢。我找到了一种使用 recvmsg() 的方法,但这似乎有点复杂 - 想知道是否有更简单的方法。
  • 你说你是用 recvmsg() 弄明白的。您应该发布自己问题的答案并接受它,因为我认为这是正确的做法。
【解决方案2】:

我查看了 recvmsg() 的详细信息并写了一些与此非常相似的内容:http://groups.google.com/group/comp.os.linux.development.system/msg/e09d9c278c7e6fe1。但主要的是使用了 recvmsg()。谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 2016-01-01
    • 1970-01-01
    相关资源
    最近更新 更多