Читаем UNIX: разработка сетевых приложений полностью

31    err_msg("... can't parse this packet type (0x%80x)",

32    buf.sap_header);

33    continue;

34   }

35   p = buf.sap_data + ((buf.sap_header & SAP AUTHLEN_MASK)

36    >> SAP_AUTHLEN_SHIFT);

37   if (strcmp(p.,"application/sdp") == 0)

38    p += 16;

39   printf(%s\n", p);

40  }

41 }

Формат пакета

9-13 Структура sap_packet описывает пакет SDP: 32-разрядный заголовок SAP, за которым следует 32-разрядный адрес отправителя и сам анонс. Анонс представляет собой строки текста в стандарте ISO 8859-1 и не может превышать 1024 байта. В каждой дейтаграмме UDP допускается только один анонс сеанса.

Чтение дейтаграммы UDP, вывод параметров отправителя и содержимого

15-21 Функция recvfrom ждет следующую дейтаграмму UDP, предназначенную нашему сокету. Когда она приходит, мы помещаем в конец буфера пустой байт, исправляем порядок байтов заголовка и выводим адрес отправителя пакета и хэш SAP.

Проверка заголовка SAP

22-34 Мы проверяем заголовок SAP, чтобы убедиться, что он относится к одному из тех типов, с которыми мы умеем работать. Пакеты SAP с адресами IPv6 в заголовках, а также сжатые и зашифрованные пакеты мы не обрабатываем.

Поиск начала и вывод анонса

35-39 Мы пропускаем аутентифицирующие данные и тип пакета, после чего выводим содержимое оставшейся части.

В листинге 21.7 показано несколько типичных примеров результата выполнения нашей программы.

Листинг 21.7. Типичный анонс SAP/SDP

freebsd % mysdr

From 128.223.83.33:1028 hash 0x0000 v=0

o=- 60345 0 IN IP4 128.223.214.198

s=UO Broadcast - NASA Videos - 25 Years of Progress

i=25 Years of Progress, parts 1-13. Broadcast with Cisco System's

IP/TV using MPEG1 codec (6 hours 5 Minutes; repeats) More information

about IP/TV and the client needed to view this program is available

from http://videolab.uoregon.edu/download.html

u=http://videolab.uoregon.edu/

e=Hans Kuhn

p=Hans Kuhn <541/346-1758>

b=AS:1000

t=0 0

a=type:broadcast

a=tool:IP/TV Content Manager 3.2.24

a=x-iptv-file:1 name y:25yop1234567890123.mpg

m=video 63096 RTP/AVP 32 31 96

c=IN IP4 224.2.245.25/127

a=framerate:30

a=rtpmap:96 WBIH/90000

a=x-iptv-svr:video blaster2.uoregon.edu file 1 loop

m=audio 31954 RTP/AVP 14 96 0 3 5 97 98 99 100 101 102 10 11 103 104 105 106

c=IN IP4 224.2.216.85/127

a=rtpmap:96 X-WAVE/8000

a=rtpmap:97 L8/8000/2

a=rtpmap:98 L8/8000

a=rtpmap:99 L8/22050/2

a=rtpmap:100 L8/22050

a=rtpmap:101 L8/11025/2

a=rtpmap:102 L8/11025

a=rtpmap:103 L16/22050/2

a=rtpmap:104 L16/22050

a=rtpmap:105 L16/11025/2

a=rtpmap:106 L16/11025

a=x-iptv-svr:audio blaster2.uoregon.edu file 1 loop

Этот анонс описывает рассылки, посвященные истории NASA (National Aeronautics and Space Administration — НАСА, государственная организация США, занимающаяся исследованием космоса). Описание сеанса SDP состоит из множества строк следующего формата:

type=value

где type всегда является одним символом, значение которого зависит от регистра, a value — это структурированная текстовая строка, зависящая от значения type. Пробелы справа и слева от знака равенства недопустимы. v=0 (в нашем случае) обозначает версию (version).

■ o= обозначает источник (origin). В данном случае имя пользователя не указано, 60345 — идентификатор сеанса, 0 — номер версии этого сеанса, IN — тип сети, IР4 — тип адреса, 128.223.214.198 — адрес. В результате объединения этих пяти элементов — имя пользователя, идентификатор сеанса, тип сети, тип адреса и адрес — образуется глобально уникальный идентификатор сеанса.

Перейти на страницу:

Все книги серии Мастер-класс

Секреты резьбы по дереву
Секреты резьбы по дереву

Изделия из древесины и материалов, имитирующих ее текстуру, привычным образом окружают нас в повседневной жизни, поэтому мы относимся к ней как к чему-то обыденному. Но как только ее коснется умелая рука мастера резьбы по дереву, рождается произведение искусства и раскрываются такие качества древесины, как богатая фактура, разнообразие цветов, особая теплота. Эта книга поможет читателю открыть для себя удивительный мир творчества и познать секреты резьбы по дереву. Автор надеется, что начинающие резчики найдут в ней интересный и полезный материал, который позволит им стать мастерами. В приложении представлены рисунки орнаментов и различных узоров, которые на первых порах можно копировать, а по мере приобретения навыка на их основе разрабатывать свои образцы.

Галина Алексеевна Серикова

Сделай сам / Хобби и ремесла / Руководства / Дом и досуг / Словари и Энциклопедии

Похожие книги