UNIX: разработка сетевых приложений
UNIX: разработка сетевых приложений читать книгу онлайн
Новое издание книги, посвященной созданию веб-серверов, клиент-серверных приложений или любого другого сетевого программного обеспечения в операционной системе UNIX, — классическое руководство по сетевым программным интерфейсам, в частности сокетам. Оно основано на трудах Уильяма Стивенса и полностью переработано и обновлено двумя ведущими экспертами по сетевому программированию. В книгу включено описание ключевых современных стандартов, реализаций и методов, она содержит большое количество иллюстрирующих примеров и может использоваться как учебник по программированию в сетях, так и в качестве справочника для опытных программистов.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
23 int msglen;
24 struct sadb_msg *msgp;
25 msglen = Read(s, &buf, sizeof(buf));
26 msgp = (struct sadb_msg*)&buf;
27 print_sadb_msg(msgp, msglen);
28 if (msgp->sadb_msg_seq == 0)
29 goteof = 1;
30 }
31 close(s);
32 }
33 int
34 main(int argc, char **argv)
35 {
36 int satype = SADB_SATYPE_UNSPEC;
37 int c;
38 opterr = 0; /* отключение записи в stderr для getopt() */
39 while ((c = getopt(argc, argv, "t:")) != -1) {
40 switch (c) {
41 case 't':
42 if ((satype = getsatypebyname(optarg)) == -1)
43 err_quit("invalid -t option %s", optarg);
44 break;
45 default:
46 err_quit("unrecognized option: %c", c);
47 }
48 }
49 sadb_dump(satype);
50 }
В этом листинге мы впервые встречаемся с функцией
getopt
t
0i:l:v
i
l
0
v
Эта функция работает с четырьмя глобальными переменными, определенными в заголовочном файле
<unistd.h>
extern char *optarg;
extern int optind, opterr, optopt;
Перед вызовом
getopt
opterr
1-8
PF_KEY
9-15
sadb_msg
Если при открытии сокета в качестве третьего аргумента использовалась константа
PF_KEY_V2
PF_KEY_V2
SADB_DUMP
16-18
print_sadb_msg
После вызова функции подготовленное сообщение записывается в сокет.
19-30
print_sadb_msg
31
38-48
main
SADB_SATYPE_UNSPEC
getsatypebyname
49
sadb_dump
Ниже приведен пример выполнения программы дампа базы данных безопасности в системе с двумя статическими соглашениями о безопасности.
macosx % <b>dump Sending dump message:</b>
SADB Message Dump, errno 0, satype Unspecified, seq 0, pid 20623
Messages returned:
SADB Message Dump, errno 0. satype IPsec AH, seq 1, pid 20623
SA: SPI=258 Replay Window=0 State=Mature
Authentication Algorithm: HMAC-MD5
Encryption Algorithm: None