Этот пример неверен - или, по крайней мере, эта конструкция непереносима.Похоже, что BSD-иши Unix (включая MacOS) определяют эти параметры как битовые маски, и в этом случае, по-видимому, вы можете избежать побитового ИЛИ, объединяя их.Однако setsockopt()
является функцией, определенной Posix.См. http://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html,, где говорится:
Аргумент option_name указывает одиночный параметр для установки.
Вы всегда должны вызывать setsockopt()
отдельно для каждой опции, которую вы хотите установить:
// Forcefully attaching socket to the port 8080
setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
setsockopt(server_fd, SOL_SOCKET, SO_REUSEPORT, &opt, sizeof(opt));