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

Класс 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() служит для определения активно соединение сервера с клиентом или нет.

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