SO_REUSEPORT на Linux

Я хочу знать, включена ли опция SO_REUSEPORT в LINUX 2.6 или нет??

Если я пытаюсь использовать его, и скомпилировать мой код я получаю следующую ошибку

01.c:72: error: `SO_REUSEPORT' undeclared (first use in this function)
01.c:72: error: (Each undeclared identifier is reported only once
01.c:72: error: for each function it appears in.)

Используя вышеупомянутую опцию я предполагаю, что могу связать два различных сокета с тем же IPADRESS и НОМЕРОМ ПОРТА

15
задан amphetamachine 16 July 2010 в 04:50
поделиться

1 ответ

Из /usr/include/asm-generic/socket.h :

/* For setsockopt(2) */
#define SOL_SOCKET      1

#define SO_DEBUG        1
#define SO_REUSEADDR    2
#define SO_TYPE         3
#define SO_ERROR        4
#define SO_DONTROUTE    5
#define SO_BROADCAST    6
#define SO_SNDBUF       7
#define SO_RCVBUF       8
#define SO_SNDBUFFORCE  32
#define SO_RCVBUFFORCE  33
#define SO_KEEPALIVE    9
#define SO_OOBINLINE    10
#define SO_NO_CHECK     11
#define SO_PRIORITY     12
#define SO_LINGER       13
#define SO_BSDCOMPAT    14
/* To add :#define SO_REUSEPORT 15 */

Хммм. Похоже, он не определен или находится на последних стадиях амортизации.

Вот что в сообщении на KernelTrap говорит:

В Linux SO_REUSEADDR обеспечивает большую часть того, что SO_REUSEPORT предоставляет в BSD.

В любом случае нет никакого смысла создавать несколько прослушивателей TCP.
Несколько потоков могут accept () на одном слушателе одновременно.
-
Реми Дени-Курмон
http://www.remlab.net/

5
ответ дан 1 December 2019 в 03:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: