Создание сетевых приложений в среде Linux. Руководство разработчика

Шон Уолтон

Linux Socket Programming
Sean Walton
книга Создание сетевых приложений в среде Linux. Руководство разработчика

Где купить книгу

Введение
Файлы к книге

Обсуждение книг по Unix и Linux в блоге Виктора Штонда

Данная книга в основном посвящена программированию сокетов на языке C в среде Linux. В ней шаг за шагом рассказывается о том, как писать профессиональные сетевые клиентские, серверные и одноранговые приложения. Читатель узнает, как работать с существующими клиент-серверными протоколами (в частности, HTTP), взаимодействовать с другими компьютерами по протоколу UDP и создавать свои собственные протоколы. В книге описываются все типы пакетов, поддерживаемых в семействе протоколов TCP/IP, их достоинства и недостатки.Помимо базового материала представлены сведения о различных методиках многозадачности, рассказывается о средствах управления вводом-выводом и обеспечения безопасности сетевых приложений. В книге также описываются объектно-ориентированные подходы к сетевому программированию на языках Java и C++. Отдельные главы посвящены технологии RPC, протоколу SSL, работе в групповом и широковещательном режимах и стандарту IPv6.Книга предназначена профессиональным программистам и студентам, которые хотят научиться создавать не только линейные алгоритмы, но и полнофункциональные многозадачные сетевые приложения.

464 стр., с ил.; ISBN 5-8459-0193-6, 0-672-31935-7; формат 70x100/16; серия Руководство разработчика; 2001, 3 кв.; Вильямс.



Понравилась книга? Порекомендуйте её друзьям и коллегам:







Об авторе

Шон Уолтон получил степень магистра компьютерных наук в 1990 г. в университете Бригема Янга, штат Юта, специализируясь в области теории языков программирования и многозадачности. В 1988 г. он начал работать на факультете вычислительной техники этого же университета в качестве консультанта по разработке теории и методов управления транспьютерами. Перейдя на должность системного администратора факультета, он впервые столкнулся с программированием BSD-сокетов. Впоследствии, будучи сотрудником компании Hewlett-Packard, он разработал средство автоматического распознавания языка (PostScript и PCL), применяемое в принтерах LaserJet 4 и более поздних моделей. Шон также создал микрооперационную систему реального времени для микроконтроллера 8052, которая эмулировала процессоры принтеров.

Шон много лет профессионально занимался программированием и администрированием UNIX, включая операционные системы Linux, HP-UX, Ultrix, SunOS и System V. Работая со столь разнообразными системами, он сосредоточивал свои усилия на создании методик системно-независимого программирования, позволявших писать приложения, без труда переносимые в любую из систем.

В последние несколько лет Шон вел курсы и читал лекции по основам вычислительной техники, управлению проектами, объектно-ориентированному проектированию, языкам Java и C++. В начале 1998 г. он начал заниматься программированием сокетов в Java и позднее включил этот предмет в свой курс лекций по Java. В настоящее время он сотрудничает с компанией Nationwide Enterprise и параллельно занимается преподавательской деятельностью.

Введение

Расширение опыта программирования

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

Фундаментальной единицей всего сетевого программирования в Linux (и большинстве других операционных систем) является сокет. Так же, как функции файлового ввода-вывода определяют интерфейс взаимодействия с файловой системой, сокет соединяет программу с сетью. С его помощью она посылает и принимает сообщения.

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

В книге рассматривается множество методик и способов решения этих проблем. Она содержит как ответы на конкретные вопросы, так и описание общих стратегий построения профессиональных сетевых программ.

Структура книги

Книга состоит из пяти частей, каждая из которых связана с предыдущим материалом.

  • Часть I, "Создание сетевых клиентских приложений"
  • Представлены вводные сведения о сокетах, определены основные термины, описаны различные типы сокетов и принципы адресации, изложена базовая теория сетей.
  • Часть II, "Создание серверных приложений"
  • Рассматриваются серверные технологии, алгоритмы многозадачности, механизмы ввода-вывода и параметры сокетов.
  • Часть III, "Объектно-ориентированные сокеты"
  • Язык C — это не единственный язык программирования сокетов. В этой части рассматриваются объектно-ориентированные подходы к сетевому программированию и описываются достоинства и недостатки объектной технологии в целом.
  • Часть IV, "Сложные сетевые методики"
  • Рассматриваются сложные методики сетевого программирования, включая безопасность, широковещание и групповое вещание, стандарт IPv6 и низкоуровневые сокеты.
  • Часть V, "Приложения"
  • В приложения вынесен справочный материал, касающийся сокетов. В приложение А включены таблицы, которые слишком велики для основных глав. В приложениях Б и В описаны системные функции работы с сокетами и функции ядра.

На сопровождающем Web-узле содержатся исходные тексты всех примеров книги, приложения в формате HTML и PDF, а также различные RFC-документы в формате HTML.

Предпочтения профессионалов

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

  • Последовательное чтение от начала до конца. В любом месте книги раскрывается какая-то одна методика. Каждый раздел и глава основаны на предыдущем материале. Вся книга организована по принципу нарастания сложности. Программирование сокетов может показаться поначалу довольно простой задачей. Однако с ним связано множество "подводных камней" и нюансов, пренебрежение которыми приведет к тому, что отличная программа на самом деле окажется неработоспособной.
  • Принцип обзора. Человек, читающий книгу, хочет быстро получить интересующую его информацию, не останавливаясь на чрезмерных деталях. Основные сведения у него уже есть, и он хочет сразу перейти к главному. Читатель может пропускать разделы до тех пор, пока не найдет то, что ему нужно.
  • Справочный материал. Экспертам, как правило, требуется быстро найти то, что им нужно (таблицы, фрагменты программ, описания API-функций). Эта информация должна быть лаконичной и легкодоступной.

Многие главы содержат врезки, в которых приводится вспомогательная информация, экспертные замечания и советы.

Что необходимо знать

В книге приводится много примеров программ, иллюстрирующих ту или иную методику. Чтобы работать с ними, необходимо знать следующее:

  • как создать исходный файл на языке C или Java (в любом доступном редакторе);
  • как скомпилировать полученный файл;
  • как запустить скомпилированную программу.

Некоторые примеры требуют модификации ядра (для режимов широковещания и группового вещания). В большинстве дистрибутивов Linux сетевая подсистема инсталлирована и запущена, даже если компьютер не подключен к сети. Чтобы иметь возможность запускать все программы, описанные в книге, необходимо:

  • уметь создавать и компилировать исходные тексты на языках C, C++ и Java;
  • иметь в наличии все необходимые компиляторы;
  • уметь конфигурировать ядро;
  • уметь компилировать и инсталлировать новое ядро.

Copyright © 1992-2019 Издательская группа "Диалектика-Вильямс"

Rambler  Top100