Программирование POSIX сокет. Сукиязов С.А. - 2 стр.

UptoLike

Составители: 

Библиотека Socket API
Компьютер, за которым вы работаете, наверняка подключен к какой-нибудь сети. Это может быть
крупная корпоративная сеть с выходом в Internet через прокси-сервер или домашняя микросеть, объеди-
няющая два компьютера в разных комнатах. Сетями соединяются рабочие станции, серверы, принтеры,
дисковые массивы, факсы, модемы и т.д. Каждое сетевое соединение использует какие
-нибудь ресурсы
или само предоставляет их. В некоторых соединениях для получения информации не требуется двусто-
роннее взаимодействие. Подобно описанному выше звонку в справочную, сетевой клиент в простейшем
случае просто подключается к серверу и принимает от него данные.
Какие ресурсы, или сервисы, могут предоставляться сервером? Их множество, но все они делятся
на четыре категории:
общиедисковые ресурсы;
ограниченныепринтеры, модемы, дисковые массивы;
совместно используемыебазы данных, программные проекты, документация;
делегируемыеудаленные программы, распределенные запросы.
В этом методическом пособии последовательно рассказывается о том, как написать простейшее
клиентское приложение, подключающееся к некоторому серверу. Так же разбирается, что собой пред-
ставляет процесс написания
сетевых программ. Наш клиент первоначально будет обращаться к серверу
для того, чтобы определить правильное время (это пример соединения, в котором от клиента не требует-
ся передавать данные на сервер). Ниже будут рассмотрены различные функции, их параметры и наибо-
лее часто возникающие ошибки.
Для подключения к серверу клиент должен знать его
адрес и предоставить ему свой. Чтобы обме-
ниваться сообщениями независимо от своего местоположения, клиент и сервер используют сокеты. Об-
ратимся еще раз к примеру с телефонным звонком. Телефонная трубка имеет два основных элемента:
микрофон (передатчик) и динамик (приемник). А телефонный номер, по сути, представляет собой уни-
кальный адрес трубки.
У сокета
имеются такие же два канала: один для прослушивания, а другой для передачи (подобно
каналам ввода-вывода в файловой системе). Клиент (звонящий) подключается к серверу (абоненту),
чтобы начать сетевой разговор. Каждый участник разговора предлагает несколько стандартных, заранее
известных сервисов (см. файл /etc/ services), например телефон, по которому можно узнать правильное
время.
Большинство программ
приводимых ниже, можно выполнять, не имея подключения к сети, при
условии, что сетевые функции ядра ОС сконфигурированы, и демон inetd запущен. В этих программах
используется локальный сетевой адрес 127.0.0.1 (так называемый адрес обратной связи). Даже если се-
тевые драйверы отсутствуют, дистрибутивы Unux содержат все необходимые средства для организации
сетевого взаимодействия с использованием адреса
обратной
Клиентская программа должна предпринять несколько действий для установления соединения с
другим компьютером или сервером. Причем эти действия следует выполнять в определенном порядке.
Конечно, возникает вопрос: "А почему нельзя все упростить?" Дело в том, что на каждом из этапов про-
грамма может задавать различные опции. Но не пугайтесь: не все действия
являются обязательными.
Если пропустить некоторые из них, операционная система воспользуется установками по умолчанию.
Базовая последовательность действий имеет такой вид: создание сокета, поиск адресата, органи-
зация канала связи с другой программой и разрыв соединения. Ниже в графическом виде представлены
действия, которые должен предпринять клиент при подключении к серверу (Рисунок 1).
      Библиотека Socket API
      Компьютер, за которым вы работаете, наверняка подключен к какой-нибудь сети. Это может быть
крупная корпоративная сеть с выходом в Internet через прокси-сервер или домашняя микросеть, объеди-
няющая два компьютера в разных комнатах. Сетями соединяются рабочие станции, серверы, принтеры,
дисковые массивы, факсы, модемы и т.д. Каждое сетевое соединение использует какие-нибудь ресурсы
или само предоставляет их. В некоторых соединениях для получения информации не требуется двусто-
роннее взаимодействие. Подобно описанному выше звонку в справочную, сетевой клиент в простейшем
случае просто подключается к серверу и принимает от него данные.
      Какие ресурсы, или сервисы, могут предоставляться сервером? Их множество, но все они делятся
на четыре категории:
      • общие — дисковые ресурсы;
      • ограниченные — принтеры, модемы, дисковые массивы;
      • совместно используемые — базы данных, программные проекты, документация;
      • делегируемые — удаленные программы, распределенные запросы.
       В этом методическом пособии последовательно рассказывается о том, как написать простейшее
клиентское приложение, подключающееся к некоторому серверу. Так же разбирается, что собой пред-
ставляет процесс написания сетевых программ. Наш клиент первоначально будет обращаться к серверу
для того, чтобы определить правильное время (это пример соединения, в котором от клиента не требует-
ся передавать данные на сервер). Ниже будут рассмотрены различные функции, их параметры и наибо-
лее часто возникающие ошибки.
      Для подключения к серверу клиент должен знать его адрес и предоставить ему свой. Чтобы обме-
ниваться сообщениями независимо от своего местоположения, клиент и сервер используют сокеты. Об-
ратимся еще раз к примеру с телефонным звонком. Телефонная трубка имеет два основных элемента:
микрофон (передатчик) и динамик (приемник). А телефонный номер, по сути, представляет собой уни-
кальный адрес трубки.
       У сокета имеются такие же два канала: один для прослушивания, а другой для передачи (подобно
каналам ввода-вывода в файловой системе). Клиент (звонящий) подключается к серверу (абоненту),
чтобы начать сетевой разговор. Каждый участник разговора предлагает несколько стандартных, заранее
известных сервисов (см. файл /etc/ services), например телефон, по которому можно узнать правильное
время.
      Большинство программ приводимых ниже, можно выполнять, не имея подключения к сети, при
условии, что сетевые функции ядра ОС сконфигурированы, и демон inetd запущен. В этих программах
используется локальный сетевой адрес 127.0.0.1 (так называемый адрес обратной связи). Даже если се-
тевые драйверы отсутствуют, дистрибутивы Unux содержат все необходимые средства для организации
сетевого взаимодействия с использованием адреса обратной
      Клиентская программа должна предпринять несколько действий для установления соединения с
другим компьютером или сервером. Причем эти действия следует выполнять в определенном порядке.
Конечно, возникает вопрос: "А почему нельзя все упростить?" Дело в том, что на каждом из этапов про-
грамма может задавать различные опции. Но не пугайтесь: не все действия являются обязательными.
Если пропустить некоторые из них, операционная система воспользуется установками по умолчанию.
      Базовая последовательность действий имеет такой вид: создание сокета, поиск адресата, органи-
зация канала связи с другой программой и разрыв соединения. Ниже в графическом виде представлены
действия, которые должен предпринять клиент при подключении к серверу (Рисунок 1).