c - UDP 多播 : how do I know which group to send to?

标签 c sockets network-programming udp multicast

我有一个小程序需要在同一 LAN 上的两台计算机之间进行通信。我对网络相当陌生,但从我读到的内容来看,我想要 UDP 多播,以便两台计算机可以相互发现,之后我可以建立 TCP 连接以进行实际数据通信。 I've found this little example for UDP multicasting我可以遵循。但是,我想知道多播组(HELLO_GROUP 在那个例子中,它是 225.0.0.37)。

我怎么知道应该使用哪个组?这个程序将在各种网络上运行,所以我不能硬编码一个(据我所知)。我是否从路由器获取组,如果是,我该怎么做?

最佳答案

您可以选择任何不是 listed as reserved 的多播地址(224.0.0.0 到 239.255.255.255)由 IANA。

另一个程序有可能(如果不太可能)也使用相同的地址。您可以通过使您的程序发送的公告消息适当具体来最大程度地减少这种情况引起任何困惑的可能性。例如

CORNSTALKS-DISCOVERY
HOST: {address:port}
[newline]

这会通知您的收件人用于他们的 TCP 连接的地址,但应该会发现它的第一行被任何其他收件人拒绝。

关于c - UDP 多播 : how do I know which group to send to?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13533333/

相关文章:

c - 原始套接字在虚拟网络上发送两个数据包

java - 如何在 Java 中接收 SSL 套接字数据?

java - 如何在 java 中解析代理 socks 数据包?

c - 如何将客户端重新连接到服务器?

c - 被低估的浮点因子

c 编程将字符串存储到字符数组中

用 C 中的函数更改数组?

C 套接字和 openssl (RSA)

python - 通过互联网使用远程应用程序传输数据的最佳方式是什么?

c - 在 C 中,如何停止 gets() 从先前的输入中打印换行符?