ПАРАМЕТРЫ СОКЕТА Методическое пособие по дисциплине «Программное обеспечение компьютерных сетей и информационных систем»

Презентация:



Advertisements
Похожие презентации
СОЗДАНИЕ И ИНИЦИАЛИЗАЦИЯ СОКЕТА Методическое пособие по дисциплине «Программное обеспечение компьютерных сетей и информационных систем»
Advertisements

СОКЕТЫ, ДАТАГРАММЫ И КАНАЛЫ СВЯЗИ Методическое пособие по дисциплине «Программное обеспечение компьютерных сетей и информационных систем»
ИНТЕРФЕЙС СЕТЕВОЙ БАЗОВОЙ СИСТЕМЫ ВВОДА / ВЫВОДА Методическое пособие по дисциплине «Программное обеспечение компьютерных сетей и информационных систем»
Корпоративные системы Лекция 3. Реализация архитектуры «Клиент- сервер» с использованием механизма сокетов.
ФОРМАЛЬНЫЕ МЕТОДЫ ОПИСАНИЯ ПРОТОКОЛОВ Методическое пособие по дисциплине «Программное обеспечение компьютерных сетей и информационных систем»
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПОИСКА НЕИСПРАВНОСТЕЙ В СЕТЯХ, АНАЛИЗА И МОДЕЛИРОВАНИЯ СЕТЕЙ Методическое пособие по дисциплине «Программное обеспечение компьютерных.
СОКЕТЫ. СОКЕТ Сокет – программный интерфейс для обеспечения обмена данными между процессами. Впервые socket API появилась в BSD Unix. Описан в POSIX В.
«СЕТИ КОМПЬЮТЕРОВ. ОСНОВНЫЕ ПОНЯТИЯ» Методическое пособие по дисциплине «Программное обеспечение компьютерных сетей и информационных систем»
Распределение памяти. Динамическое выделение памяти.
Лекция 3 Система адресации в Интернет * IP-адрес (Internet Protocol Address) - уникальный сетевой адрес узла в компьютерной сети, построенной по протоколу.
Компьютерная сеть. Компьютерная сеть система связи компьютеров или компьютерного оборудования (серверы, маршрутизаторы и другое оборудование). Для передачи.
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
Локальные сети. Аппаратное обеспечение сети.. Локальная вычислительная сеть (ЛВС, локальная сеть, сленг. локалка; англ. Local Area Network, LAN) компьютерная.
Локальные и глобальные компьютерные сети. Адресация в сетях.
Базы данных База данных – это информационная модель, позволяющая в упорядоченном виде хранить данные о группе объектов, обладающих одинаковым набором.
Локальная компьютерная сеть Локальная компьютерная сеть – это система взаимосвязанных компьютеров, работающих в пределах одного помещения, здания, одной.
ОфисЖилой дом телефон. ПОРТЫ При доставке сообщения по протоколу TCP или UDP запрашиваемые протоколы и сервисы распознаются по номеру порта. Порт – это.
СЕТЕВОЕ ПРОГРАММИРОВАНИЕ В LINUX. Со́кеты Со́кеты (англ. socket углубление, гнездо, разъём) название программного интерфейса для обеспечения обмена данными.
База данных (БД) – Совокупность определённым образом организованной информации на определённую тему (в рамках определённой предметной деятельности); Организованная.
Локальная сеть. Компьютерная сеть Компьютерная сеть – система двух или более компьютеров, связанных каналами передачи информации.
Транксрипт:

ПАРАМЕТРЫ СОКЕТА Методическое пособие по дисциплине «Программное обеспечение компьютерных сетей и информационных систем»

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

Для работы с адресами в формате InterNet используется другой вариант этой структуры, в котором детализируется формат поля sa_data

Поле sin_family Поле sin_family определяет тип адреса. Следует записать в это поле значение AF_INET, которое соответствует типу адреса, принятому в InterNet (структура srv_address имеет тип SOCKADDR_IN) srv_address.sin_family = AF_INET;

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

Особенностью поля sin_port Особенностью поля sin_port является использование так называемого сетевого формата данных. Этот формат отличается от того, что принят в процессорах с архитектурой Intel, а именно - младшие байты данных хранятся по старшим адресам памяти (архитектура процессоров Intel подразумевает хранение старших байтов данных по младшим адресам).

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

Специальный набор функций интерфейса Windows Socket Для выполнения преобразований из обычного формата в сетевой и обратно в интерфейсе Windows Socket интерфейсе Windows Socket предусмотрен специальный набор функций. В частности, для заполнения поля sin_port нужно использовать функцию htons, выполняющую преобразование 16-разрядных данных из формата Intel в сетевой формат.

Инициализация поля sin_port в приложении SERVER Ниже показано, как инициализируется поле sin_port в приложении SERVER

Поле sin_addr структуры sockaddr_in представляет собой структуру in_addr

Инициализация сокета При инициализации сокета в этой структуре следует указать адрес IР (32- битовое уникальное число, идентифицирующее данный компьютер, с которым будет работать данный сокет. Если сокет будет работать с любым адресом (например, создается сервер, который будет доступен из узлов с любым адресом).

Адрес для сокета может быть указан следующим образом srv_address.sin_addr.s_addr = INADDR_ANY;

В том случае, если сокет будет работать с определенным IP-адресом (например, создается приложение- клиент, которое будет обращаться к серверу с конкретным адресом IP), в указанную структуру необходимо записать реальный IP-адрес.

Датаграммный протокол UDP позволяет посылать пакеты данных одновременно всем рабочим станциям в широковещательном режиме. Для этого необходимо указать адрес как INADDR_BROADCAST.

Если известен адрес в виде четырех десятичных чисел, разделенных точкой (именно так его может вводить пользователь), то можно заполнить поле адреса при помощи функции inet_addr (структура dest_sin имеет тип SOCKADDR_IN) dest_sin.sin_addr.s_addr = inet_addr(" ");

В случае ошибки В случае ошибки функция возвращает значение INADDR_NONE, что и следует использовать для проверки.

Обратное преобразование адреса IP в текстовую строку Обратное преобразование адреса IP в текстовую строку можно при необходимости легко выполнить с помощью функции inet_ntoa, имеющий следующий прототип char FAR * inet_ntoa(struct in_addr in); При ошибке эта функция возвращает NULL.

Работа с доменными именами, применяя сервер DNS или файл HOSTS Однако чаще всего пользователь работает с доменными именами, применяя сервер DNS или файл HOSTS В этом случае следует воспользоваться функцией gethostbyname, возвращающей адрес IP, а затем записать полученный адрес в структуру sin_addr

В случае ошибки функция gethostbyname возвращает NULL, после чего причину ошибку можно выяснить путем проверки кода возврата функцией WSAGetLastError.

Если указанный адрес найден в базе DNS или файле HOSTS (см. подраздел 7.1.1), функция gethostbyname возвращает указатель на структуру hostent, описанную ниже

Искомый адрес Искомый адрес находится в первом элементе списка h_addr_list[0], на который можно также ссылаться при помощи h_addr, длина поля адреса находится в поле h_length.

ПРИВЯЗКА АДРЕСА К СОКЕТУ После подготовки структуры SOCKADDR (записи в нее параметров сокета - в частности, адреса) следует привязку адреса к сокету при помощи функции bind int bind(SOCKET sock, const struct sockaddr FAR *addr, int namelen);

Параметр sock содержит дескриптор созданного ранее функцией socket сокета, в поле addr следует записать указатель на подготовленную структуру SOCKADDR, в поле namelen - размер этой структуры.

В случае ошибки функция bind возвращает значение SOCKET_ERROR, дальнейший анализ причин ошибок следует выполнять при помощи функции WSAGetLastError, возможные коды ошибок перечислены ниже

Пример вызова функции bind показан ниже

Литература 1. Чепмен Д. и др. Разработка InterNet-приложений в DELPHI 2. -Киев.:DiaSoft, c. 2. Елманова Н.З. Borland C++Builder (архитектура клиент/сервер, многозвенные системы, InterNet- приложения). -M.: Диалог-МИФИ, c. 3. Зайцев С.С. Описание и реализация протоколов сетей ЭВМ. -М.: Наука, c. 4. Клейнрок Л. Вычислительные системы с очередями. Пер. с англ. -М.: Мир, c. 5. Фролов А.В., Фролов Г.В. Локальные сети персональных компьютеров(монтаж сети, установка программного обеспечения). Библиотека системного программиста, т.7. M.: Диалог-МИФИ, c.