UNIX: разработка сетевых приложений
Шрифт:
Листинг Г.1. Заголовочный файл unp.h
//lib/unp.h
1 /* Наш собственный заголовочный файл */
2 #ifndef __unp_h
3 #define __unp_h
4 #include "../config.h" /* параметры конфигурации для данной ОС */
5 /* "../config.h" генерируется сценарием configure */
6 /*
изменив список директив #include,
7 нужно также изменить файл acsite.m4 */
8 #include <sys/types.h> /* основные системные типы данных */
9 #include <sys/socket.h> /* основные определения сокетов */
10 #include <sys/time.h> /* структура timeval{} для функции select */
11 #include <time.h> /* структура timespec{} для функции pselect */
12 #include <netinet/in.h> /* структура sockaddr_in{} и другие сетевые
определения */
13 #include <arpa/inet.h> /* inet(3) функции */
14 #include <errno.h>
15 #include <fcntl.h> /* для неблокируемых сокетов */
16 #include <netdb.h>
17 #include <signal.h>
18 #include <stdio.h>
19 #include <stdlib.h>
20 #include <string.h>
21 #include <sys/stat.h> /* для констант S_xxx */
22 #include <sys/uio.h> /* для структуры iovec{} и ready/writev */
23 #include <unistd.h>
24 #include <sys/wait.h>
25 #include <sys/un.h> /* для доменных сокетов Unix */
26 #ifdef HAVE_SYS_SELECT_H
27 #include <sys/select.h> /* для удобства */
28 #endif
29 #ifdef HAVE_SYS_SYSCTL_H
30 #include <sys/sysctl.h>
31 #endif
32 #ifdef HAVE_POLL_H
33 #include <poll.h> /* для удобства */
34 #endif
35 #ifdef HAVE_SYS_EVENT_H
36 #include <sys/event.h> /*
для kqueue */
37 #endif
38 #ifdef HAVE_STRINGS_H
39 #include <strings.h> /* для удобства */
40 #endif
41 /* Три заголовочных файла обычно нужны для вызова ioctl
42 для сокета/файла: <sys/ioctl.h>, <sys/filio.h>,
43 <sys/sockio.h> */
44 #ifdef HAVE_SYS_IOCTL_H
45 #include <sys/ioctl.h>
46 #endif
47 #ifdef HAVE_SYS_FILIO_H
48 #include <sys/filio.h>
49 #endif
50 #ifdef HAVE_SYS_SOCKIO_H
51 #include <sys/sockio.h>
52 #endif
53 #ifdef HAVE_PTHREAD_H
54 #include <pthread.h>
55 #endif
56 #ifdef HAVE_NET_IF_DL_H
57 #include <net/if_dl.h>
58 #endif
59 #ifdef HAVE_NETINET_SCTP_H
60 #include <netinet/sctp.h>
61 #endif
62 /* OSF/1 фактически запрещает recv и send в <sys/socket.h> */
63 #ifdef __osf__
64 #undef recv
65 #undef send
66 #define recv(a,b,c,d) recvfrom(a,b,c,d,0,0)
67 #define send(a,b,c,d) sendto(a,b,c,d,0,0)
68 #endif
69 #ifndef INADDR_NONE
70 #define INADDR_NONE 0xffffffff /* должно было быть в <netinet/in.h> */
71 #endif
72 #ifndef SHUT_RD /* три новые константы Posix.1g */
73 #define SHUT_RD 0 /* отключение чтения */
Поделиться:
Популярные книги
Моя на одну ночь
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Черный Маг Императора 8
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Измена. Отбор для предателя
1. Отбор для предателя
Фантастика:
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга II
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Шаг в бездну
3. Перешагнуть пропасть
Фантастика:
фэнтези
космическая фантастика
7.89
рейтинг книги
Часовая битва
6. Часодеи
Детские:
детская фантастика
9.38
рейтинг книги
Вечная Война. Книга II
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Хроники странного королевства. Вторжение. (Дилогия)
110. В одном томе
Фантастика:
фэнтези
9.38
рейтинг книги
Часовой ключ
1. Часодеи
Фантастика:
фэнтези
9.36
рейтинг книги
Инвестиго, из медика в маги
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Кротовский, может, хватит?
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Драконий подарок
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Очешуеть! Я - жена дракона?!
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Идеальный мир для Лекаря 9
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00