Запуск сервера файлов и клиентов

zapusk servera fajlov i klientov Сетевые сценарии

Так как обслуживание клиентов на сервере выполняется в отдельных потоках, опробовать сервер и клиент можно на одном и том же компьютере с Windows. Сначала запустим экземпляр сервера, и пока он работает, запустим на том же компьютере два экземпляра клиента:

[окно сервера, localhost]

C:\\Internet\Sockets> python getfile.py -mode server

Server connected by (‘127.0.0.1’, 59134) at Sun Apr 25 16:26:50 2010

Server connected by (‘127.0.0.1’, 59135) at Sun Apr 25 16:27:21 2010

[окно клиента, localhost]

C:\\Internet\Sockets> dir /B *.gif *.txt File Not Found

C:\\Internet\Sockets> python getfile.py -file testdir\ora-lp4e.gif

Client got testdir\ora-lp4e.gif at Sun Apr 25 16:26:50 2010

C:\\Internet\Sockets> python getfile.py -file testdir\textfile.txt

-port 50001

Client got testdir\textfile.txt at Sun Apr 25 16:27:21 2010

Клиенты запускаются в каталоге, куда нужно поместить загружаемые файлы — реализация экземпляра клиента отбрасывает пути на сервере при создании локального файла. Здесь «загрузка» просто копирует запрошенные файлы в локальный родительский каталог (команда DOS fc сравнивает содержимое файлов):

C:\\Internet\Sockets> dir /B *.gif *.txt

ora-lp4e.gif

textfile.txt

C:\\Internet\Sockets> fc /B ora-lp4e.gif testdir/ora-lp4e.gif

FC: no differences encountered

C:\\Internet\Sockets> fc textfile.txt testdir\textfile.txt FC: no differences encountered

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

[окно удаленного сервера]

[…]$ python getfile.pymode server

[окно клиента: обслуживание клиента выполняется

в отдельном потоке на сервере]

C:\…\Internet\Sockets> python getfile.py -mode client

-host learning-python.com

-port 50001 -file python.exe

C:\…\Internet\Sockets> python getfile.py

-host learning-python.com -file index.html

Замечание, касающееся безопасности: реализация сервера готова отправить любой файл, находящийся на сервере, имя которого получено от клиента, если сервер выполняется под именем пользователя, имеющего право чтения запрошенного файла. Если вас волнует проблема защиты некоторых своих файлов на сервере, следует добавить логику, запрещающую загрузку защищенных файлов. Я оставляю ее реализацию читателю в качестве упражнения, но такие проверки имен файлов будут реализованы в утилите загрузки getfile, далее в книге.

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий