Для чего используется SOL_SOCKET?

Вопрос: Как говорится в Linux man страницы Используйте эту константу в качестве аргумента уровня для getsockopt или setsockopt для управления параметрами уровня сокета, описанными в этом разделе Но я не понимаю этого объяснения. Какова цель SOL_SOCKET? Что оно делает? Лучший ответ: SOL_SOCKET - это сам слой сокета. Он используется для опций, которые не зависят от

Вопрос:

Как говорится в Linux man страницы

Используйте эту константу в качестве аргумента уровня для getsockopt или setsockopt для управления параметрами уровня сокета, описанными в этом разделе

Но я не понимаю этого объяснения. Какова цель SOL_SOCKET? Что оно делает?

Лучший ответ:

SOL_SOCKET – это сам слой сокета. Он используется для опций, которые не зависят от протокола.

Вы можете прочитать больше здесь.

Ответ №1

При получении опции сокета или ее настройке вы указываете имя опции, а также уровень. Когда уровень = 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

Оцените статью
Добавить комментарий