组播/套接字问题

时间:2011-06-22 08:11:39

标签: .net sockets multicast

我遇到了无法解决的多播/套接字问题。

如果我在端口4000和ip 225.0.0.1上的2台不同的PC上运行2个应用程序,一切都很好。 如果我尝试JoinMulticastGroup 225.0.0.2端口5000,它不起作用,因为,如果我已正确理解,如果您使用端口4000启动应用程序,则只能使用该端口。

现在,由于我们需要在同一台PC上运行多个通过多播通信的应用程序而我无法与其他端口连接组,因此我必须在同一端口启动所有应用程序,但这似乎是不可能的。我已经尝试设置SO_REUSEADDR套接字选项,但它没有帮助。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

> “如果使用端口4000启动应用程序,则只能使用该端口。”

不完全:如果您将套接字连接到端口4000,那么不能将同一套接字连接到不同的端口(除非您重复使用套接字,这是一个不同的故事但它仍然没有解决你的问题)。但是,您可以在应用程序中创建多个套接字,并且每个套接字可以联合不同的多播,但是您不能让一个套接字更改它所连接的端口。

如果您向我们提供一个简单的(sscce兼容的)示例,您也会尝试这样做,这样我们就可以明确指出您出错的地方。

答案 1 :(得分:0)

好的,谢谢你的帮助,但我想我已经明白了问题所在。我已经修复了运行多个应用程序的问题,在我执行的插件使用的jrtblib中绑定之前添加了SO_REUSEADDR。现在它可以工作,因为我必须将选项也添加到rtcp套接字,而不仅仅是rtp一个。 另一个问题是我误解了jrtplib的使用。我试图使用相同的客户端发送和接收,但这不是jrtplib应该如何工作。 使用相同的客户端发送和接收,我被迫在所有客户端使用相同的端口,这就产生了问题。现在我开始使用专门的发送插件和另一个接收插件,一切都像魅力一样。