Ответ 1
SOL_SOCKET
- это сам слой сокета. Он используется для опций, которые не зависят от протокола.
Вы можете прочитать больше здесь.
Как говорится в Linux man
страницы
Используйте эту константу в качестве аргумента уровня для
getsockopt
илиsetsockopt
для управления параметрами уровня сокета, описанными в этом разделе
Но я не понимаю этого объяснения. Какова цель SOL_SOCKET
? Что оно делает?
SOL_SOCKET
- это сам слой сокета. Он используется для опций, которые не зависят от протокола.
Вы можете прочитать больше здесь.
При получении опции сокета или ее настройке вы указываете имя опции, а также уровень. Когда уровень = SOL_SOCKET
, элемент будет искать в самом сокете.
Например, предположим, что мы хотим установить опцию сокета для повторного использования адреса в 1 (on/true), мы передаем SOL_SOCKET
"level" и значение, которое мы хотим установить.
int value = 1;
setsockopt(mysocket, SOL_SOCKET, SO_REUSEADDR, &value, sizeof(value));
Это установит SO_REUSEADDR
в моем сокете в 1.
Я сам застрял на этом, документация крайне загадочная. Чуть более подробная документация здесь: http://pubs.opengroup.org/onlinepubs/7908799/xns/getsockopt.html