Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Python — сетевое программирование

Предыдущая страницаСледующая страница

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

В Python также есть библиотеки, обеспечивающие высокоуровневый доступ к определенным сетевым протоколам уровня приложений, таким как FTP, HTTP и т. д.

В этой главе вы познакомитесь с самой известной концепцией сетевых технологий — программированием сокетов.

Что такое сокеты?

Сокеты — это конечные точки двунаправленного канала связи. Сокеты могут взаимодействовать внутри процесса, между процессами на одном компьютере или между процессами на разных континентах.

Сокеты могут быть реализованы через ряд различных типов каналов:сокеты домена Unix, TCP, UDP и т. д. сокет библиотека предоставляет специальные классы для работы с общими транспортами, а также общий интерфейс для работы с остальными.

У сокетов есть свой словарь —

<тд>

Домен

Семейство протоколов, используемых в качестве транспортного механизма. Эти значения являются константами, такими как AF_INET, PF_INET, PF_UNIX, PF_X25 и т. д.

<тд>

тип

Тип связи между двумя конечными точками, обычно SOCK_STREAM для протоколов с установлением соединения и SOCK_DGRAM для протоколов без установления соединения.

<тд>

протокол

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

<тд>

имя хоста

Идентификатор сетевого интерфейса —

<тд>

порт

Каждый сервер прослушивает клиентов, звонящих на один или несколько портов. Порт может быть номером порта Fixnum, строкой, содержащей номер порта, или именем службы.

Серийный номер Термин и описание
1
2
3
4
5

Сокет Модуль

Чтобы создать сокет, вы должны использовать socket.socket() функция доступна в сокете модуль, который имеет общий синтаксис —

s = socket.socket (socket_family, socket_type, protocol=0)

Вот описание параметров —

Если у вас есть сокет объект, то вы можете использовать необходимые функции для создания клиентской или серверной программы. Ниже приведен список необходимых функций —

Методы сокета сервера

<тд>

s.bind()

Этот метод привязывает адрес (имя хоста, пара номеров портов) к сокету.

<тд>

s.listen()

Этот метод устанавливает и запускает прослушиватель TCP.

<тд>

s.accept()

Это пассивно принимает TCP-соединение клиента, ожидая, пока соединение не будет получено (блокировка).

Серийный номер Метод и описание
1
2
3

Методы клиентских сокетов

<тд>

s.connect()

Этот метод активно инициирует подключение к TCP-серверу.

Серийный номер Метод и описание
1

Общие методы сокетов

<тд>

s.recv()

Этот метод получает сообщение TCP

<тд>

s.send()

Этот метод передает сообщение TCP

<тд>

s.recvfrom()

Этот метод получает сообщение UDP

<тд>

s.sendto()

Этот метод передает сообщение UDP

<тд>

s.close()

Этот метод закрывает сокет

<тд>

сокет.gethostname()

Возвращает имя хоста.

Серийный номер Метод и описание
1
2
3
4
5
6

Простой сервер

Для записи интернет-серверов мы используем сокет функция, доступная в модуле сокета, для создания объекта сокета. Затем объект сокета используется для вызова других функций для настройки сервера сокетов.

Теперь вызовите bind(hostname, port) функция для указания порта за вашу услугу на данном хосте.

Затем вызовите accept метод возвращаемого объекта. Этот метод ожидает, пока клиент подключится к указанному вами порту, а затем возвращает connection объект, представляющий соединение с этим клиентом.

#!/usr/bin/python           # This is server.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.
s.bind((host, port))        # Bind to the port

s.listen(5)                 # Now wait for client connection.
while True:
   c, addr = s.accept()     # Establish connection with client.
   print 'Got connection from', addr
   c.send('Thank you for connecting')
   c.close()                # Close the connection

Простой клиент

Давайте напишем очень простую клиентскую программу, которая открывает соединение с заданным портом 12345 и заданным хостом. Очень просто создать клиент сокета, используя socket Python. функция модуля.

socket.connect(имя хоста, порт) открывает TCP-соединение с hostname на порт . Когда у вас открыт сокет, вы можете читать его, как любой объект ввода-вывода. Когда закончите, не забудьте закрыть его, как если бы вы закрыли файл.

Следующий код представляет собой очень простой клиент, который подключается к заданному хосту и порту, считывает все доступные данные из сокета и затем завершает работу —

#!/usr/bin/python           # This is client.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.

s.connect((host, port))
print s.recv(1024)
s.close()                     # Close the socket when done

Теперь запустите этот server.py в фоновом режиме, а затем запустите выше client.py, чтобы увидеть результат.

# Following would start a server in background.
$ python server.py & 

# Once server is started run client as follows:
$ python client.py

Это даст следующий результат —

Got connection from ('127.0.0.1', 48437)
Thank you for connecting

Интернет-модули Python

Список некоторых важных модулей сетевого/интернет-программирования на Python.

<тд>80 <тд>23 <тд>70
Протокол Общая функция Номер порта Модуль Python
HTTP Веб-страницы httplib, urllib, xmlrpclib
ННТП Новости Usenet 119 nntplib
FTP Передача файлов 20 ftplib, urllib
SMTP Отправка электронной почты 25 смтплиб
POP3 Получение электронной почты 110 поплиб
IMAP4 Получение электронной почты 143 imaplib
Телнет Командные строки telnetlib
Суслик Передача документов gopherlib, urllib

Пожалуйста, проверьте все упомянутые выше библиотеки для работы с протоколами FTP, SMTP, POP и IMAP.

Дополнительная литература

Это был быстрый старт с программированием сокетов. Это обширная тема. Рекомендуется перейти по следующей ссылке, чтобы найти более подробную информацию –


Python

  1. Типы данных Python
  2. Операторы Python
  3. Оператор передачи Python
  4. Аргументы функции Python
  5. Словарь Питона
  6. Объектно-ориентированное программирование Python
  7. Итераторы Python
  8. Замыкания Python
  9. Дата и время Python
  10. Сон питона ()