我想一劳永逸地了解这一点。连接多播套接字的过程是什么?我知道你必须绑定(bind)到本地接口(interface)(为此你需要 IP 和端口吗?)然后我知道你必须加入一个组(你是否需要 IP:PORT 作为你要加入的地址和网络接口(interface)! !!??) 然后你终于可以离开小组了。
有经验的人能说清楚这么多地址的全部内容吗?我将在下面列出:
- 绑定(bind)地址(IP:PORT)
- 网络地址(IP:PORT)
- 多播地址(IP:PORT)
这里的多播组在哪里?
最佳答案
多播组是一个特殊的IP地址。你通过 setsockopt()
使用套接字选项 IP_ADDMEMBERSHIP 加入它,或者例如在 Java 中通过 MulticastSocket.joinGroup()
。这里没有端口号。如果您想通过特定的本地地址加入,请使用指定本地地址的重载,或先调用 setNetworkInterface()
。
绑定(bind)到本地地址是一个单独的操作,它主要确定套接字可以在哪些本地地址上发送和接收数据:一个或所有地址:一个本地地址,它决定了您正在监听的可用子网到并且可以通过或端口或两者发送。通常最好使用 INADDR_ANY 作为绑定(bind)地址,除非您的应用程序神奇地知道网络拓扑。
在 Linux 中您可以绑定(bind)到多播地址这一事实使这变得困惑,但这似乎是一个现在将永远伴随着我们的误解。
您通过发送到多播地址来发送到多播组。
关于linux - 加入多播组时需要 PORT 还是只需要 IP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9423820/