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