Сеть в Python

проекты Python Программирование и разработка

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

Как Python используется в сети?

Язык программирования Python играет жизненно важную роль в сетевом программировании. Python имеет встроенную стандартную библиотеку, которая обеспечивает полную поддержку кодирования и декодирования данных, сетевых протоколов и всех других сетевых концепций. Написание кода для сетевого программирования на Python намного проще, чем на C++ или Java. Язык программирования Python обеспечивает два уровня доступа к сетевым службам: низкоуровневый и высокоуровневый доступ. Низкоуровневый доступ предлагает базовую поддержку сокетов операционной системы. В то время как доступ высокого уровня позволяет реализовывать такие протоколы, как FTP. HTTP и т. д.

Эта статья поможет вам получить общее представление о самой известной концепции сети в Python — программировании сокетов.

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

Сокеты обеспечивают двунаправленный канал связи между двумя конечными точками. Процессы на других машинах, процессы на той же машине, и сокет успевает общаться со всеми. Они могут быть реализованы на разных каналах, таких как UDP, TCP, доменные сокеты Unix и т. д. Библиотека сокетов в Python предоставляет различные классы для управления общей передачей данных или общий интерфейс для управления остальными. Сокеты используют различные типы протоколов для определения соединения порт-порт между серверами и клиентами. Эти протоколы используются для FTP, SMTP, электронной почты, IP-адреса, DNS и т. д. Словарь сокетов отличается. Взгляните на следующую иллюстрацию:

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

Строка «<broadcast>», определяющая широковещательный адрес.

Строка нулевой длины.

Строка, содержащая имя хоста, двойной адрес или адрес IPv6.

Целое число, которое определяет двоичный адрес в порядке байтов хоста.

Что такое программирование сокетов?

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

Давайте рассмотрим несколько примеров, чтобы узнать, как реализовать сетевое программирование на Python.

Пример 1

В этом примере мы изучим синтаксис модуля сокета и как его импортировать в программу Python. Сначала мы импортируем модуль сокета в программу Python, используя оператор «import socket». Затем мы можем использовать функции модулей сокетов. Вот синтаксис модуля socket():

import socket

socketmodule = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

print(socketmodule)

Теперь давайте выполним оператор, чтобы увидеть, что он возвращает:

Теперь давайте выполним оператор

Вот следующий вывод:

В этом примере мы изучим синтаксис модуля сокета и как его

Пример 2

Теперь давайте узнаем, как создать простой сервер и простой клиент и посмотрим, как они взаимодействуют друг с другом.

Вот серверная кодировка:

Сначала импортируйте сокет, а затем создайте объект сокета:

import socket as s

socketmodule = socket.socket()

Получите имя машины, вызвав оператор gethostname():

hostname = socket.gethostname()

Укажите номер порта, который вы хотите, чтобы сервер установил соединение между сервером и клиентом:

portnum = 12345

Теперь привяжите хост к порту, чтобы начать соединение:

s.bind((hostname, portnum))

Следующим шагом будет ожидание подключения клиента:

socketmodule.listen(5)

Наконец, установите соединение с клиентом:

while True:

a, adrs = s.accept()

print (‘Connection received from’, adrs )

a.send(b‘Thanks for connecting’)

a.close()

Ниже приведено кодирование на стороне клиента:

Чтобы начать соединение, модуль сокета должен быть импортирован на стороне клиента так же, как он был импортирован на стороне сервера:

import socket as s

socketmodule = socket.socket()

Выполните тот же процесс, получите имя локальной машины и зарезервируйте порт, который был зарезервирован сервером для установки соединения:

hostname = socket.gethostname()

portnum = 12345

Теперь соедините хост с портом и установите соединение между ними:

socketmodule.connect((‘127.0.0.1’, portnum))

print(socketmodule.recv(1024))

s.close()

Когда вы закончите кодирование на стороне клиента и на стороне сервера, запустите сервер и клиент в фоновом режиме, чтобы увидеть результаты:

Когда вы закончите кодирование на стороне клиента и на стороне

После успешного подключения вы увидите следующий вывод:

После успешного подключения вы увидите следующий вывод

Пример 3

Давайте рассмотрим еще один пример, чтобы лучше понять, как сервер соединяется с клиентом, а также как сервер слушает клиента.

Вот серверная кодировка:

Для кодирования на стороне сервера выполните тот же процесс. Импортируйте сокет, создайте модуль сокета, зарезервируйте номер порта, привяжите хост и порт и слушайте клиента. Если вы заметили, в цикл добавляется условие «если» для проверки конкретного условия. См. следующий код:

import socket
portnum = 60
IPadrs = ‘127.0.0.1’
bufferS = 30

socketmodule = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
socketmodule.bind((IPadrs, portnum))
socketmodule.listen(1)
conn, adrs = socketmodule.accept()
print (‘The Address of the connection is: ‘ , adrs)
while True:
data = conn.recv(bufferS)
if not data:
break

print («The received data is: «, data)
con.send(data)
con.close()

Ниже приведено кодирование на стороне клиента:

Процесс установления соединения на стороне клиента снова такой же. Импортируйте сокет, создайте модуль сокета, зарезервируйте номер порта и соедините порт с хостом:

import socket

portnum = 5006

IPadrs = ‘127.0.0.1’

bufferS = 1024

PrintMessage = «Hi! I’m a message from client.”

socketmodule = socket.socket (socket.AF_INET, socket.SOCK_STREAM)

socketmodule.connect((IPadrs, portnum))

socketmodule.send(PrintMessage)

data = socketmodule.recv(bufferS)

socketmodule.close

Теперь обратите внимание, что клиент отправляет сообщение на сервер: «Привет! Я сообщение от клиента». Это сообщение принимается сервером и распечатывается.

После успешного соединения между сервером и клиентом вы увидите следующий вывод:

После успешного соединения между сервером и клиентом вы увидите

Заключение

Это базовый обзор программирования сокетов в Python и быстрый старт с реализацией. Тем не менее, это обширная тема, содержащая множество деталей со сложным кодированием. Как только вы освоите эти простые программы, вы сможете погрузиться в глубины программирования сокетов.

Читайте также:  Pandas - фильтр по дате
Оцените статью
bestprogrammer.ru
Добавить комментарий