在关于SO_REUSEPORT的讨论中,下面的问题被发到了reddit上,但没有得到回答。我想知道堆栈溢出是否知道答案。
有人能告诉我这与多播是如何交互的吗? 我有一个应用程序,该程序应该侦听多播UDP消息,这个程序可以在同一台计算机上多次启动。当消息出现时,所有侦听过程都应该得到它。 我注意到,在Linux上,如果我没有设置SO_REUSEPORT,它可以正常工作,如果我正确理解,设置SO_REUSEPORT可能是错误的--我不希望在进程之间分发UDP消息,我希望所有进程都得到一个副本。但是,在OS上,除非设置了SO_REUSEPORT,否则程序的第二次执行将无法找到空闲端口。 tl;dr:当使用多播时,是否期望设置SO_REUSEPORT?
发布于 2013-08-26 17:53:20
WIth SO_REUSEPORT,可以将多个套接字绑定到同一个端口和地址。唯一的要求是早期的套接字必须设置了这个选项。因此,如果我们希望将两个套接字( sock1和sock2 )绑定到同一个端口(和地址),那么只有当sock1和sock2都设置了SO_REUSEPORT时,s2才能重用端口/地址。WIth对于多播,如果sock1和sock2都是同一个组播组的接收者,那么它们都会得到数据的副本。
您可能会发现这个答案很有帮助:他们有什么区别?它们在所有主要操作系统中都是相同的吗?
https://stackoverflow.com/questions/18443004
复制相似问题