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。
答案 0 :(得分:1)
macOS(和其他BSD)具有与Linux不同的SO_REUSEPORT实现。在(相对)最新的Linux版本上,它将允许您进行内核级负载平衡,但在BSD上,只有最后一个要绑定的套接字才能获得连接。
长话短说,它不能成功,唉。