Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«UNIX: Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сСтСвых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 69

Автор Уильям БтивСнс

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ сокСта SCTP_SET_PEER_PRIMARY_ADDR

Установка этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ собСсСднику сообщСния, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ установку ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ локального адрСса Π² качСствС основного. ΠŸΡ€ΠΎΡ†Π΅ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ структуру sctp_setpeerprim ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² Π½Π΅ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ассоциации ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ адрСс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ сдСлан основным. Π­Ρ‚ΠΎΡ‚ адрСс Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ привязан ΠΊ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° sctp_setpeerprim опрСдСляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

struct sctp_setpeerprim {

 sctp_assoc_t sspp_assoc_id;

 struct sockaddr_storage sspp_addr;

};

НиТС приводится описаниС ΠΏΠΎΠ»Π΅ΠΉ структуры.

β–  sspp_assoc_id ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ассоциации, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ трСбуСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ основной адрСс. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с сокСтом Ρ‚ΠΈΠΏΠ° Β«ΠΎΠ΄ΠΈΠ½-ΠΊ-ΠΎΠ΄Π½ΠΎΠΌΡƒΒ» это ΠΏΠΎΠ»Π΅ игнорируСтся;

β–  sspp_addr содСрТит Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ адрСс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ собСсСдником Π² качСствС основного.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SCTP Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ. Если локальная конСчная Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, процСссу Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π° ошибка EOPNOTSUPP. Если ΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π΅ поддСрТиваСтся ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, ошибка Π±ΡƒΠ΄Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ: EINVAL. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для считывания основного адрСса; ΠΎΠ½ слуТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для установки Π½ΠΎΠ²ΠΎΠ³ΠΎ адрСса Π² качСствС основного.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ сокСта SCTP_STATUS

Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ сокСта слуТит для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ статусС ассоциации SCTP. Для обСспСчСния максимальной пСрСносимости ΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ sctp_opt_info, Π° Π½Π΅ getaddrinfo. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ структуру sctp_status, ΡƒΠΊΠ°Π·Π°Π² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ассоциации sstat_assoc_id. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ассоциации ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. Π€ΠΎΡ€ΠΌΠ°Ρ‚ структуры sctp_status Ρ‚Π°ΠΊΠΎΠ²:

struct sctp_status {

 sctp_assoc_t sstat_assoc_id;

 int32_t sstat_state;

 u_int32_t sstat_rwnd;

 u_int16_t sstat_unackdata;

 u_int16_t sstat_penddata;

 u_int16_t sstat_instrms;

 u_int16_t sstat_outstrms;

 u_int32_t sstat_fragmentation_point;

 struct sctp_paddrinfo sstat_primary;

};

Поля структуры ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ смысл:

β–  sstat_assoc_id содСрТит ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ассоциации;

β–  sstat_state содСрТит константу, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΡƒΡŽ состояниС ассоциации (Ρ‚Π°Π±Π». 7.8). ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС состояний ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ SCTP, Ρ‡Π΅Ρ€Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΡ€ΠΈ установкС ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ассоциации, приводится Π½Π° рис. 2.8;

β–  sstat_rwnd содСрТит Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ вычислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° собСсСдника;

β–  sstat_unackdata содСрТит количСство Π½Π΅ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΡ€Ρ†ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΆΠ΄ΡƒΡ‰ΠΈΡ… ΠΎΡ‚Π²Π΅Ρ‚Π° собСсСдника;

β–  sstat_penddata содСрТит количСство Π½Π΅ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΡ€Ρ†ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… локальной ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ SCTP для прилоТСния;

β–  sstat_instrms содСрТит количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… собСсСдником для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π΄Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ;

β–  sstat_outstrms содСрТит количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ данная конСчная Ρ‚ΠΎΡ‡ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ собСсСднику;

β–  sstat_fragmentation_point содСрТит Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… сообщСний, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ локальной ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ SCTP. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ равняСтся минимальной MTU для всСх адрСсатов ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ мСньшСй Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π΅, установлСнной ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° SCTP_MAXSEG;

β–  sstat_primary содСрТит Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ основной адрСс. Основной адрСс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… собСсСднику.


Π’Π°Π±Π»ΠΈΡ†Π° 7.8. Бостояния SCTP

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π° ОписаниС SCTP_CLOSED Ассоциация Π·Π°ΠΊΡ€Ρ‹Ρ‚Π° SCTP_COOKIE_WAIT Ассоциация ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΠ°ΠΊΠ΅Ρ‚ INIT SCTP_COOKIE_ECHOED Ассоциация ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»Π° эхо-ΠΎΡ‚Π²Π΅Ρ‚ cookie SCTP_ESTABLISHED Ассоциация установлСна SCTP_SHUTDOWN_PENDING Ассоциация ΠΆΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСния ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ SCTP_SHUTDOWN_SENT Ассоциация ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»Π° сообщСниС ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ SCTP_SHUTDOWN_RECEIVED Ассоциация ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° сообщСниС ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ SCTP_SHUTDOWN_ACK_SENT Ассоциация ΠΆΠ΄Π΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π° SHUTDOWN-COMPLETE

Π­Ρ‚ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для диагностики соСдинСния ΠΈ опрСдСлСния характСристик Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ сСанса. НапримСр, функция sctp_get_no_strms Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 10.2 Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ sstat_outstrms для опрСдСлСния количСства доступных для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². НизкоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ sstat_rwnd ΠΈΠ»ΠΈ высокоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ sstat_unackdata позволяСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΎ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π° собСсСдника, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ воврСмя Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. ПолС sstat_fragmentation_point ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ прилоТСниями для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ количСства ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², создаваСмых SCTP, ΠΏΡƒΡ‚Π΅ΠΌ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² сообщСний.

7.11. Ѐункция fcntl

Π‘ΠΎΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ fcntl ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈΒ» (file control). Π­Ρ‚Π° функция выполняСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ управлСния дСскрипторами. ΠŸΠ΅Ρ€Π΅Π΄ описаниСм этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π΅Π΅ влияния Π½Π° сокСт Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅Π΅ прСдставлСниС ΠΎ Π΅Π΅ возмоТностях. Π’ Ρ‚Π°Π±Π». 7.9 приводятся Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, выполняСмыС функциями fcntl ΠΈ ioctl ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ сокСтами.


Π’Π°Π±Π»ΠΈΡ†Π° 7.9. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ fcntl ΠΈ ioctl ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… сокСтов

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ fcntl ioctl ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ сокСт Posix.1g Установка сокСта для Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° F_SETFL, O_NONBLOCK FIONBIO fcntl Установка сокСта для Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, управляСмого сигналом F_SETFL, O_ASYNC FIOASYNC fcntl Установка Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° сокСта F_SETOWN SIOCSPGRP ΠΈΠ»ΠΈ FIOSETOWN fcntl ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° сокСта F_GETOWN SIOCGPGRP ΠΈΠ»ΠΈ FIOGETOWN fcntl ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ количСства Π±Π°ΠΉΡ‚ΠΎΠ² Π² ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΎΠΌ Π±ΡƒΡ„Π΅Ρ€Π΅ сокСта FIONREAD ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, находится Π»ΠΈ процСсс Π½Π° ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠ΅ внСполосных Π΄Π°Π½Π½Ρ‹Ρ… SIOCATMARK sockatmark ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка интСрфСйсов SIOCGIFCONF Sysctl ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ интСрфСйсов SIOC[GS]IFxxx Кэш-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ARP SIOCxARP RTM_xxx ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ SIOGxxxRT RTM_xxx

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ ΡˆΠ΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊ сокСтам Π»ΡŽΠ±Ρ‹ΠΌ процСссом, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ (ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ интСрфСйсами) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π΅ΠΆΠ΅, Π° послСдниС Π΄Π²Π΅ (ARP ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ) Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ifconfig ΠΈ route. О Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… опСрациях Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ioctl ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π² Π³Π»Π°Π²Π΅ 17, Π° ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… сокСтах β€” Π² Π³Π»Π°Π²Π΅ 18.

БущСствуСт мноТСство способов выполнСния ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π½ΠΎ, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² послСднСй ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅, стандарт POSIX опрСдСляСт, Ρ‡Ρ‚ΠΎ функция fcntl являСтся ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ способом. ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ Ρ‚Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎ POSIX ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ sockatmark (см. Ρ€Π°Π·Π΄Π΅Π» 24.3) ΠΊΠ°ΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ способ тСстирования Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ прСбывания процСсса Π½Π° ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠ΅ внСполосных Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с пустой послСднСй ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΎΠΉ Π½Π΅ стандартизованы POSIX.

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ Ρ‚Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ сокСт для Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ для Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, управляСмого сигналом, Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ»ΠΈΡΡŒ с использованиСм ΠΊΠΎΠΌΠ°Π½Π΄ FNDELAY ΠΈ FASYNC Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fcntl. POSIX опрСдСляСт константы О_xxx.