带有libuv的macOS上的SO_REUSEPORT

时间:2016-12-20 17:13:11

标签: macos networking macros freebsd libuv

SO_REUSEPORT选项不适用于带有libuv的macOS。

uv_loop_init

uv_tcp_init_ex

uv_fileno //获取fd

int option_value = 1; setsockopt(fd,SOL_SOCKET,SO_REUSEPORT,& option_value,sizeof(int)

uv_tcp_bind

uv_thread_create 4

我在0.0.0.0:8080看到4个相同的地址和端口绑定,但只有thread1的connection_cb有效,所以我可以在我的程序中使用此选项吗? THX。

1 个答案:

答案 0 :(得分:1)

macOS(和其他BSD)具有与Linux不同的SO_REUSEPORT实现。在(相对)最新的Linux版本上,它将允许您进行内核级负载平衡,但在BSD上,只有最后一个要绑定的套接字才能获得连接。

长话短说,它不能成功,唉。