套接字选项SO_REUSEADDR和SO_REUSEPORT,它们有何不同?它们在所有主要操作系统中的含义是否相同?

时间:2013-01-17 21:45:45

标签: linux windows sockets unix portability

套接字选项man pagesSO_REUSEADDR的{​​{1}}和程序员文档对于不同的操作系统是不同的,并且通常非常混乱。某些操作系统甚至没有选项SO_REUSEPORT。 WEB中充满了关于此主题的矛盾信息,通常您可以找到仅适用于特定操作系统的一个套接字实现的信息,这些信息甚至可能未在文中明确提及。

那么SO_REUSEPORTSO_REUSEADDR有何不同?

没有SO_REUSEPORT的系统是否更受限制?

如果我在不同的操作系统上使用其中任何一个,那么预期的行为究竟是什么?

1 个答案:

答案 0 :(得分:3)

Mecki的答案是绝对完美的,但是值得一提的是FreeBSD还支持SO_REUSEPORT_LB,它模仿Linux的SO_REUSEPORT行为-它平衡了负载;参见setsockopt(2)