Чтение онлайн

на главную - закладки

Жанры

UNIX: разработка сетевых приложений
Шрифт:

23.4. Уведомления

В разделе 9.14 уже отмечалось, что приложение может подписаться на уведомления, общее количество которых составляет 7 штук. Пока что наше приложение игнорировало все события, за исключением прихода новых данных. В этом разделе приводятся примеры приема и интерпретации уведомлений SCTP о других событиях транспортного уровня. В листинге 23.4 представлена функция, отображающая все получаемые уведомления. Нам придется изменить и

код сервера, чтобы разрешить доставку уведомлений обо всех происходящих событиях. Однако сервер не будет использовать получаемые уведомления для чего-либо конкретного.

Листинг 23.4. Функция вывода уведомлений

1 #include "unp.h"

2 void

3 print_notification(char *notify_buf)

4 {

5 union sctp_notification *snp;

6 struct sctp_assoc_change *sac;

7 struct sctp_paddr_change *spc;

8 struct sctp_remote_error *sre;

9 struct sctp_send_failed *ssf;

10 struct sctp_shutdown_event *sse;

11 struct sctp_adaption_event *ae;

12 struct sctp_pdapi_event *pdapi,

13 const char *str;

14 snp = (union sctp_notification*)notify_buf;

15 switch (snp->sn_header.sn_type) {

16 case SCTP_ASSOC_CHANGE:

17 sac = &snp->sn_assoc_change;

18 switch (sac->sac_state) {

19 case SCTP_COMM_UP:

20 str = "COMMUNICATION UP";

21 break;

22 case SCTP_COMM_LOST:

23 str = "COMMUNICATION LOST";

24 break;

25 case SCTP_RESTART:

26 str = "RESTART";

27 break;

28 case SCTP_SHUTDOWN_COMP:

29 str = "SHUTDOWN COMPLETE";

30 break;

31 case SCTP_CANT_STR_ASSOC:

32 str = "CAN'T START ASSOC";

33 break;

34 default:

35 str = "UNKNOWN";

36 break;

37 } /*
конец ветвления switch (sac->sac_state) */

38 printf("SCTP_ASSOC_CHANGE %s, assoc=0x%x\n", str,

39 (uint32_t)sac->sac_assoc_id);

40 break;

41 case SCTP_PEER_ADDR_CHANGE:

42 spc = &snp->sn_paddr_change;

43 switch (spc->spc_state) {

44 case SCTP_ADDR_AVAILABLE:

45 str = "ADDRESS AVAILABLE";

46 break;

47 case SCTP_ADDR_UNREACHABLE:

48 str = "ADDRESS UNREACHABLE";

49 break;

50 case SCTP_ADDR_REMOVED:

51 str = "ADDRESS REMOVED";

52 break;

53 case SCTP_ADDR_ADDED:

54 str = "ADDRESS ADDED";

55 break;

56 case SCTP_ADDR_MADE_PRIM:

57 str = "ADDRESS MADE PRIMARY";

58 break;

59 default:

60 str = "UNKNOWN";

61 break;

62 } /* конец ветвления switch (spc->spc_state) */

63 printf("SCTP_PEER_ADDR_CHANGE %s, addr=%s, assoc=0x%x\n", str,

64 Sock_ntop((SA*)&spc->spc_aaddr, sizeof(spc->spc_aaddr)),

65 (uint32_t)spc->spc_assoc_id);

66 break;

67 case SCTP_REMOTE_ERROR:

68 sre = &snp->sn_remote_error;

69 printf("SCTP_REMOTE_ERROR: assoc=0x%x error=%d\n",

70 (uint32_t)sre->sre_assoc_id, sre->sre_error);

71 break;

72 case SCTP_SEND_FAILED:

73 ssf = &snp->sn_send_failed;

74 printf("SCTP_SEND_FAILED: assoc=0x%x error=%d\n",

Поделиться:
Популярные книги

Запасная дочь

Зика Натаэль
Фантастика:
фэнтези
6.40
рейтинг книги
Запасная дочь

Идеальный мир для Лекаря 7

Сапфир Олег
7. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 7

Мастер 6

Чащин Валерий
6. Мастер
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер 6

Кодекс Охотника. Книга IV

Винокуров Юрий
4. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга IV

Архил...?

Кожевников Павел
1. Архил...?
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Архил...?

Ну привет, заучка...

Зайцева Мария
Любовные романы:
эро литература
короткие любовные романы
8.30
рейтинг книги
Ну привет, заучка...

Барон диктует правила

Ренгач Евгений
4. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон диктует правила

На изломе чувств

Юнина Наталья
Любовные романы:
современные любовные романы
6.83
рейтинг книги
На изломе чувств

Охота на эмиссара

Катрин Селина
1. Федерация Объединённых Миров
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Охота на эмиссара

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Король Масок. Том 1

Романовский Борис Владимирович
1. Апофеоз Короля
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Король Масок. Том 1

Релокант

Ascold Flow
1. Релокант в другой мир
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Релокант

Адмирал южных морей

Каменистый Артем
4. Девятый
Фантастика:
фэнтези
8.96
рейтинг книги
Адмирал южных морей

Возвышение Меркурия. Книга 17

Кронос Александр
17. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 17