Майкл Джонсон - Разработка приложений в среде Linux. Второе издание

Здесь есть возможность читать онлайн «Майкл Джонсон - Разработка приложений в среде Linux. Второе издание» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2007, ISBN: 2007, Издательство: Вильямс, Жанр: ОС и Сети, Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Разработка приложений в среде Linux. Второе издание: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Разработка приложений в среде Linux. Второе издание»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет собой отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из других операционных систем. Подробно рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование свободно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Изобилие хорошо документированных примеров кода помогает лучше усвоить особенности программирования в Linux.
Книга рассчитана на разработчиков разной квалификации, а также может быть полезна для студентов и преподавателей соответствующих специальностей.

Разработка приложений в среде Linux. Второе издание — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Разработка приложений в среде Linux. Второе издание», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

В обеих функциях предполагается, что первый параметр — это файловый дескриптор. Второй параметр backlogфункции listen()задает максимальное количество соединений, которые могут одновременно ожидать обработки на данном сокете. Сетевые соединения не устанавливаются до тех пор, пока сервер не примет соединение через accept(); все входящие соединения считаются приостановленными. Поддерживая небольшое количество ожидающих соединений в очереди, ядро тем самым освобождает серверные процессы от необходимости быть в постоянной готовности принимать соединения. Исторически принято ограничивать в приложениях количество невыполненных заданий пятью, хотя иногда необходимо большее количество. Функция listen()возвращает ноль в случае успеха и какое-то другое число в случае неудачи.

Вызов accept()превращает отложенное соединение в установленное. Установленное соединение получает новый файловый дескриптор, который возвращает функция accept(). Новый дескриптор наследует все атрибуты того сокета, к которому обращалась функция listen(). Необычное свойство accept()состоит в том, что она возвращает сетевые ошибки, ожидающие обработки, как ошибки принятия от accept() [122] Варианты BSD не поддерживают такую модель поведения, в таких системах ошибки проходят без отчетов. . При возврате ошибки серверы не должны прерывать работу, если параметр errnoпринимает одно из следующих значений: ECONNABORTED, ENETDOWN, EPROTO, ENOPROTOOPT, EHOSTDOWN, ENONET, EHOSTUNREACH, EOPNOTSUPPили ENETUNREACH. Все эти ошибки необходимо игнорировать, просто вызвав функцию accept()на сервере еще раз.

Параметры addrи addrlenуказывают данные, в которых ядро размещает адрес удаленного (клиентского) конца соединения. В исходном состоянии addrlenпредставляет собой целое число, содержащее размер буфера, на который ссылается addr. Функция accept()аналогично open() возвращает файловый дескриптор или некоторое отрицательное значение, если возникла ошибка.

17.3.5. Подключение к серверу

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

После этапа связывания (который, впрочем, может быть пропущен) клиент соединяется с сервером через системный вызов connect().

#include

int connect(int sock, struct sockaddr * servaddr, socklen_t addrlen);

Процесс переходит к подключению, придерживаясь адреса, с которым должен соединиться сокет.

На рис. 17.1 показаны системные вызовы, которые обычно используются для установки соединений сокетов, и порядок, в котором они выполняются.

Рис 171 Установка соединений сокетов 1736 Поиск адресов соединения После - фото 6

Рис 17.1. Установка соединений сокетов

17.3.6. Поиск адресов соединения

После того как соединение установлено, приложение может найти адреса как удаленного, так и локального концов сокета с помощью функций getpeername()и getsockname().

#include

int getpeername(int s, struct sockaddr * addr, socklen_t * addrlen);

int getsockname(int s, struct sockaddr * addr, socklen_t * addrlen);

Обе функции передают адреса соединений сокета s в те структуры, на которые указывают их параметры addr. Адрес удаленной стороны возвращается функцией getpeername(), тогда как getsockname()сообщает адрес локальной части соединения. Для обеих функций в качестве первоначального целочисленного значения, на которое указывает параметр addrlen, должен быть установлен размер пространства, которое выделяется параметром addr. Это целое число заменяется количеством байт в возвращаемом адресе.

17.4. Сокеты домена Unix

Сокеты домена Unix— это простейшее семейство протоколов, доступное через API- интерфейс сокетов. Они фактически не являются сетевыми протоколами, поскольку могут соединяться с сокетами только на одном и том же компьютере. Несмотря на то что это значительно ограничивает их полезность, они все же используются многими приложениями благодаря гибкому механизму IPC, который они поддерживают. Их адреса — это путевые имена, которые создаются в файловой системе, когда сокет привязывается к путевому имени. Файлы сокетов, представляющие адреса доменов Unix, могут быть запущены функцией stat(), но не могут быть открыты с помощью open(); вместо этого нужно использовать API сокетов.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Разработка приложений в среде Linux. Второе издание»

Представляем Вашему вниманию похожие книги на «Разработка приложений в среде Linux. Второе издание» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Геше Джампа Тинлей - Лоджонг (второе издание)
Геше Джампа Тинлей
Алексей Филатов - Люди «А». Второе издание
Алексей Филатов
Отзывы о книге «Разработка приложений в среде Linux. Второе издание»

Обсуждение, отзывы о книге «Разработка приложений в среде Linux. Второе издание» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x