Сокеты позволяют реализовать взаимодействие процессов, выполняющихся на одной машине или на нескольких машинах в сети (межмашинное взаимодействие). При использовании сокетов необходимо решить несколько основных задач:
-- Определить протокол взаимодействия как набор пакетов, которыми могут обмениваться процессы и которые должны идентифицироваться процессами.
-- Разработать программу сервер.
-- Разработать программу клиент.
С целью иллюстрации возможностей реализации межмашинного взаимодействия в Python рассмотрим пример простейшего сервера - сервера времени. При разработке такого сервера единственным видом данных, которыми будут обмениваться клиент и сервер будет текстовая строка с текущим временем, что позволяет отказаться от идентификации пакета и, таким образом, использовать наиболее простой интерфейс. Ниже представлен код сервера и код клиента.

Программа-сервер:
-- Создает сокет и устанавливает для него порт 8888 (выбран как один из свободных).
-- Устанавливает максимальное количество одновременных соединений 5.
-- Выполняет цикл опроса подключений клиентов с отправкой точного времени и последующим отключением.

HTML
Текст

  1. #!/usr/bin/python

  2. from socket import *
  3. import time

  4. s = socket(AF_INET, SOCK_STREAM)
  5. s.bind(("",8888))
  6. s.listen(5)
  7. while 1:
  8.        client,addr = s.accept()
  9.        print "Connection from ",addr
  10.        client.send(time.ctime(time.time()))
  11.        client.closeПрограмма-клиент:
  12. -- Создает сокет и присоединяется к порту 8888 указанного хоста данном случае - локального).
  13. -- Читает строку (не более 1024 байт).
  14. -- Закрывает соединение и выводит полученное время на стандартный вывод.
  15. #!/usr/bin/python

  16. from socket import *

  17. s = socket(AF_INET, SOCK_STREAM)
  18. s.connect(("localhost",8888))
  19. tm = s.recv(1024)
  20. s.close()
  21. print "The time is ",tm

При выполнении программ примера первым должен быть запущен сервер (удобно в отдельном терминале). Выполняем, проверяем результаты. На этом все.



Постоянные ссылки

При копировании ссылка на TeaM RSN обязательна!

URI

Html (ЖЖ)

BB-код (Для форумов)

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.