Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_1-7.doc
Скачиваний:
51
Добавлен:
27.03.2015
Размер:
824.83 Кб
Скачать

Список литературы

1.Камер Дуглас. Компьютерные сети и Internet. Разработка приложений для Internet: Пер. с англ. –М.: Издательский дом «Вильямс», 2002.-640с.

2.Куроуз Дж., Росс К. Компьютерные сети. Многоуровневая архитектура Интернета. 2-е изд. –СПб.: Питер, 2004. -765с.

3. Основы WEB-технологий/ П.Б. Храмцов и др. –М.: ИНТУИТ.РУ «Интернет-Университет Информационных Технологий», 2003. -512с.

4. Семёнов Ю.А. (ГНЦ ИТЭФ), book.itep.ru Телекоммуникационные технологии. http://www.citforum.ru

Приложение а Пример api-интерфейса прикладного

программирования для обмена данными по сети.

Для демонстрации принципов сетевого программирования был реализован простой API-интерфейс для операций обмена данными по сети.

Таблица 1. Пример API-интерфейса, включающий в себя семь операций.

Операция

Описание операции

await_contact

Используется сервером для перехода в режим ожидания запроса клиента на установление соединения

make_contact

Используется клиентом для передачи серверу запроса на установление соединения

cname_to_comp

Используется для преобразования имени компьютера в эквивалентное внутреннее двоичное значение

appname_to_appnum

Используется для преобразования имени программы в эквивалентное внутреннее двоичное значение

send

Используется клиентом и сервером для передачи данных

recv

Используется клиентом и сервером для приема данных

send_eof

Используется клиентом и сервером после завершения передачи данных

Замечание

Функции send и recv входят непосредственно в состав операционной системы.

Сервер начинает свою работу с вызова функции await_contact для перехода в режим ожидания запроса на установление соединения от клиента. Клиент начинает свою работу с вызова функции make_contact для установления соединения. После установления соединения клиента с сервером эти две программы могут обмениваться сообщениями с помощью функций send и recv. Оба приложения должны быть запрограммированы так, чтобы каждое из них могло определить, должно ли оно отправлять или получать сообщения, поскольку, если оба приложения будут пытаться только получать но не отправлять сообщения, они будут заблокированы.

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

Функция await_contact

Используется сервером для перехода в режим ожидания запроса клиента на установление соединения.

connection await_contact( appnum a)

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

Функция make_contact

Используется клиентом для передачи серверу запроса на установление соединения.

coonection make_contact(computer c, appnum a)

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

Функция cname_to_comp

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

computer cname_to_comp(char *c)

Этот вызов принимает один параметр строкового типа и возвращает эквивалентное двоичное значение типа computer.

Функция appname_to_appnum

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

appnum appname_to_appnum(char *a)

Этот вызов принимает один параметр строкового типа и возвращает эквивалентное двоичное значение типа appnum.

Функция send

Используется клиентом и сервером для передачи данных по сети.

int send(connection con, char *buffer, int length, int flags)

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

Функция recv

Используется клиентом и сервером для приема данных

int recv(connection con, char *buffer, int length, int flags)

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

Функция send_eof

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

int send_eof(connection con)

Единственный параметр этой функции указывает соединение. Функция возвращает отрицательное значение, если возникла ошибка, иначе положительное значение или ноль.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]