- •Содержание
- •Предисловие
- •Лабораторная работа №1
- •Цель работы
- •Методические указания
- •Общая информация о протоколах
- •Стек протоколов Интернета
- •Сетевое оборудование
- •Физическая среда передачи
- •Принцип взаимодействия прикладной программы с системным программным обеспечением
- •Анализ структуры локальной сети факультета пми
- •Задание к лабораторной работе
- •Контрольные вопросы
- •Лабораторная работа №2
- •Цель работы
- •Методические указания
- •Описание функций работы с сокетами
- •Методы, которые реализуют api-интерфейс сокетов
- •Задание к лабораторной работе
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа №3
- •Цель работы
- •Методические указания
- •Потоки управления
- •Задание к лабораторной работе
- •Контрольные вопросы
- •Идентификация страницы
- •Взаимодействие типа клиент/сервер
- •Передача документов Web и протокол http
- •Архитектура программного обеспечения браузера
- •Кэширование в Web-браузерах
- •Поддержка кэширования протоколом http
- •Альтернативные протоколы передачи
- •Основные типы документов Web
- •Преимущества и недостатки документов каждого типа
- •Задание к лабораторной работе
- •Контрольные вопросы
- •Лабораторная работа № 5
- •Цель работы
- •Методические указания Передача фреймов по сети
- •Способы адресации
- •Широковещательная рассылка
- •Групповая рассылка
- •Определение содержимого фрейма
- •Заголовки фрейма и его формат
- •Формат фрейма Ethernet
- •Фреймы, не обеспечивающие автоматическое распознавание типа
- •Задание к лабораторной работе
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа № 6
- •Цель работы
- •Методические указания
- •Основы протокола icmp
- •Реализация
- •Реализация с использованием Windows api
- •Задание к лабораторной работе
- •Стандарт ieee 802.11 и его расширение 802.11b/g
- •Режимы работы 802.11
- •Физический уровень 802.11
- •Метод fhss
- •Метод dsss
- •Расширение стандарта 802.11
- •Канальный (Data Link) уровень 802.11
- •Подключение к сети
- •Поддержка потоковых данных
- •Безопасность
- •Построение Wi-Fi
- •Что нужно учитывать, при построении wlan
- •Архитектуры
- •Вопросы безопасности
- •Проектирование и реализация аппаратного и программного обеспечения Аппаратное обеспечение терминального класса №208б
- •Настройки клиента и сервера для различных ос
- •Работа с базой данных, содержащей mac-адреса
- •Исследование уровня сигнала на территории факультета пми
- •Задание к лабораторной работе
- •Контрольные вопросы
- •Список литературы
- •Приложение а Пример api-интерфейса прикладного
- •Пример кода эхо-сервера
- •Пример кода клиента службы эхо-повтора
- •Приложение б Пример api-интерфейса прикладного
- •Класс Server
- •Класс Client
- •Модуль transform
- •Пример кода эхо-сервера
- •Пример кода клиента службы эхо-повтора
Класс Server
Объект класса Server создается вызовом
server.Server([fc]) ->server_object
При этом выполняется конструктор класса Server, который инициализирует объект и создает графический интерфейс для работы с объектом. Объект класса сервер сразу после создания приведен на рисунке 3. Необязательный параметр fc по умолчанию равен 1. Если задать значение этого параметра нулевым, не будет вызвана функция, которая создает поле для ввода порта и кнопку “Active”(при нажатии этой кнопки вызывается функция, которая позволяет войти в режим приема запросов на соединение). То есть сервер будет состоять из поля для вывода информации, поля ввода строки и кнопок “Go” и “Quit”.
Метод await_contact класса Server используется сервером для перехода в режим ожидания запроса от клиента на установление соединения.
await_contact() -> 0/-1
Метод не принимает параметров, поэтому, прежде чем его вызывать, нужно объекту – серверу задать номер порта для приема запросов. Это можно сделать двумя способами. Можно непосредственно присвоить атрибуту объекта PORT значение порта. Но лучше для этого воспользоваться методом set_port, который помимо того, что устанавливает значение атрибута PORT, проверяет это значение на корректность:
set_port(port) -> 0/-1
В случае удачного присваивания метод возвращает 0, иначе -1. Обратным к методу set_port является метод get_port, возвращающий значение атрибута PORT:
get_port() -> port
Аналогичные методы set_host и get_host позволяют установить и получить информацию о самом сервере:
set_host(host) -> 0/-1
get_host() -> host
Метод face() создает поле для ввода порта и кнопку “Active”(войти в режим приема запросов на соединение):
face() -> None
None – в языке Python специальный тип, который используется для обозначения отсутствия значения. Функция, не имеющая оператора return(возвратить) возвращает None.
Графический интерфейс пользователя требует от программы иметь событийную ориентацию, поэтому разработаны несколько методов для управления циклом событий. После создания объекта-сервера программа находится в главном цикле обработки событий. Для выхода из этого цикла используется метод go() (ему соответствует кнопка “Go” сервера):
go() -> None
Для входа в главный цикл обработки событий используется метод wait_event():
wait_event() -> None
Для выхода из программы служит метод quit() (ему соответствует кнопка “Quit” сервера):
quit() -> None
Для разрыва соединения используется метод shutdown_connection(). У этого метода нет параметров и он ничего не возвращает. При вызове этого метода происходит закрытие сокета.
Так как основной задачей разработки клиент-серверных приложений является организация обмена данными между локальным и удаленным компьютерами для посылки и приема данных используются методы send и recv:
send(data) ->bytes/-1
Метод используется сервером для передачи данных. Параметр data представляет собой строку данных, которую необходимо переслать. Функция возвращает количество посланных байт в случае успешного выполнения и -1 в случае неудачи.
Метод recv используется сервером для получения данных от клиента.
recv([buffsz]) -> data/-1
Параметр вызова buffsz представляет собой максимальный объем порции данных, получаемых за вызов одной процедуры. Он не является обязательным и по умолчанию равен 1024. Метод возвращает полученные данные в случае успешного выполнения, иначе возвращает -1.
В классе Server содержится еще небольшое количество разнообразных методов. В основном они связаны с реализацией графического интерфейса и работой с ним: метод accept_query() используется режима приема запросов на соединение, с помощью формы, которая приведена на рис.1(кнопка Active – при нажатии этой кнопки методом accept_query выполняется считывание и проверка данных, введенных пользователем, а затем вызывается метод await_contact); метод printc(data) реализует вывод строк в окно сервера, а метод readc() осуществляет ввод пользователем строки из специального поля, расположенного внизу окна сервера(рис.1). Метод is_connect() служит для определения активно соединение сервера с клиентом или нет.