Можно ли использовать SOL_SOCKET для любого имени?

Я очень новичок в программировании SCTP, и при устранении неполадок и обращении к книге (Сетевое программирование Unix, автор У. Ричард Стивенс) я наткнулся на кое-что неоднозначное. Они использовали имя уровня как SOL_SOCKET здесь и здесь для имени опции (optname) значения SCTP_INITMSG и SCTP_EVENTS, которые предполагается использовать с IPPROTO_SCTP, в соответствии с книга. Оба кода работают нормально, поэтому я должен что-то упустить, и я чувствую, что упускаю что-то ключевое. Что это такое? Пожалуйста, помогите мне в этом. Спасибо.


person Sukhmeet Singh    schedule 10.07.2014    source источник
comment
Они должны иметь одинаковые числовые значения. IPPROTO_SCTP предназначен только для использования в socket() IIRC. Книга могла ошибаться, хотя за более чем двадцать лет я ни разу не нашел в ней ошибки. Я бы подумал, что вы должны использовать SOL_SCTP для опций SCTP_* в setsockopt().   -  person user207421    schedule 10.07.2014
comment
Я знаю, что слишком сильно придерживаюсь книги, но нет уровня с именем SOL_SOCKET, параметры SCTP_* приведены в таблице для уровня IPPROTO_SCTP. Более того, я только что узнал, что эта страница ---› opensourceforu .com/2011/12/socket-api-part-5-sctp также говорится, что для управления сокетами на уровне API сокетов уровень указывается как SOL_SOCKET. Если бы вы могли объяснить это утверждение, это бы мне очень помогло.   -  person Sukhmeet Singh    schedule 10.07.2014
comment
Кроме того, книга может быть устаревшей, это том 1, третье издание, которое у меня есть.   -  person Sukhmeet Singh    schedule 10.07.2014