-->

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

На нашем литературном портале можно бесплатно читать книгу UNIX: разработка сетевых приложений, Стивенс Уильям Ричард-- . Жанр: ОС и Сети. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
UNIX: разработка сетевых приложений
Название: UNIX: разработка сетевых приложений
Дата добавления: 16 январь 2020
Количество просмотров: 376
Читать онлайн

UNIX: разработка сетевых приложений читать книгу онлайн

UNIX: разработка сетевых приложений - читать бесплатно онлайн , автор Стивенс Уильям Ричард

Новое издание книги, посвященной созданию веб-серверов, клиент-серверных приложений или любого другого сетевого программного обеспечения в операционной системе UNIX, — классическое руководство по сетевым программным интерфейсам, в частности сокетам. Оно основано на трудах Уильяма Стивенса и полностью переработано и обновлено двумя ведущими экспертами по сетевому программированию. В книгу включено описание ключевых современных стандартов, реализаций и методов, она содержит большое количество иллюстрирующих примеров и может использоваться как учебник по программированию в сетях, так и в качестве справочника для опытных программистов.

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

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

Листинг Г.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 /* отключение чтения */

 74 #define SHUT_WR   1 /* отключение записи */

 75 #define SHUT_RDWR 2 /* отключение чтения и записи */

 76 #endif

 77 #ifndef INET_ADDRSTRLEN

 78 #define INET_ADDRSTRLEN 16 /* "ddd.ddd.ddd.ddd"

 79 1234567890123456 */

 80 #endif

 81 /* Нужно, даже если нет поддержки IPv6, чтобы мы всегда могли

 82    разместить в памяти буфер требуемого размера без директив #ifdef */

Перейти на страницу:
Комментариев (0)
название