Введение в сокет-программирование в Python

При программировании сокетов связь устанавливается через сеть между двумя сокетами (узлами). Сервер действует как порт прослушивателя, который прослушивает определенный IP-адрес, а клиентский сокет обращается к серверному сокету для связи. Чтобы работать в программировании сокетов, нам нужно будет импортировать библиотеку сокетов, которую предоставляет python.

Python Socket Server

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

Протокол управления передачей (TCP) является выбранным протоколом по умолчанию. TCP надежен, поскольку отправленные в сети пакеты обнаруживаются и передаются отправителем. TCP также обеспечивает упорядоченную доставку данных, т. Е. Порядок, в котором они отправляются отправителем в том же порядке, в котором они считываются приложением.

server.py

Посмотрите на программу ниже: server.py

Строка 3: Socket - это предустановленная библиотека, для которой будет создан объект. Этот модуль сокетов импортируется в программу Python и будет использоваться в качестве функции сокетов позже в программе. Здесь мы создаем объект, который будет вызывать функцию сокета.

Строка 4: socket.AF_INET соответствует IPV4 (Если вы хотите использовать IPV6, то можно использовать socket.AF_INET6. Это относится к семейству сокетов. AF_INET указывает протокол, который будет использоваться для связи. IPV4 и IPV6 - это разные средства управления передачей способы или протоколы передачи данных по сети.

IPV4 и IPV6 - это просто разные типы IP-адресов. Socket.AF_INET соответствует TCP. Протокол управления передачей (TCP) работает с IP и определяет, как компьютер отправляет пакеты данных друг другу.

Далее нам нужен TCP, для этого нам понадобится socket.SOCK_STREAM, который является типом сокета. TCP - это протокол, ориентированный на установление соединения, в основном включающий выполнение трехстороннего рукопожатия с сервером и клиентом. Затем мы предоставляем имя хоста, где клиент будет подключаться.

Строка 5: В качестве имени хоста можно использовать «localhost» или «127.0.01» или socket.gethostname (), любой из них. Он получает IP-адрес сервера.

Выше приведены два параметра, которые мы определяем для сокета.

Строка 6: У нас обычно много портов в нашей системе, поэтому нам нужно использовать неиспользуемый порт хоста. Можно использовать любую четырехзначную цифру, поскольку в основном заняты нижние цифры.

Строка 7: метод bind (), который связывает хост и порт с сокетом.

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

Строка 8: у нас есть возможность указать номер клиента, который может взаимодействовать с сервером. Это достигается с помощью l.listen (6). Запускает прослушиватель TCP. Цифра представляет количество клиентов, которые могут взаимодействовать. Если, например, 7- й клиент приходит, он будет удален.

Строка 9: s.accept () примет запрос от клиента и вернет два объекта, один - объект сокета-клиента, а другой - адрес. IP-адрес будет адресом клиента, где присутствует наш клиент.

Строка 10: это больше похоже на уведомление сервера о установленном соединении.

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

Python Socket Client

Здесь мы поговорим о клиенте Python для сокетов:

client.py

Вот наша программа для клиента: client.py

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

Строка 8: в программе сервера есть метод binding (), здесь будет использоваться метод connect (). Кортеж здесь будет принимать хост и порт в методе. Мы берем тот же порт, который мы использовали в нашем server.py

Нам нужно запустить server.py и client.py в разных терминалах, и именно так мы увидим соединение.

Выход:

Снимок экрана сделан с двух разных терминалов, один из которых открыт в CMD, а другой - в PowerShell в Windows. В левом окне открывается программа server.py, а в терминале справа открывается программа client.py.

Мы видим вывод, напечатанный в терминале на стороне сервера.

Отправка строки из одного файла в другой файл

Мы попытаемся отправить сообщение со стороны клиента на сторону сервера. Мы напишем сообщение в программе client.py.

1. client.py

Вот наша программа для клиента: client.py

Строка 9 и строка 10: мы устанавливаем сообщение в переменную и отправляем сообщение в виде байтов и преобразуем его или кодируем в формате UTF-8. (UTF - это стандарт Unicode, так как все содержимое сообщения является символами, и они попадают под диаграмму Unicode). Мы должны кодировать и сохранять данные настолько малыми, насколько это возможно, в противном случае передача в какой-то момент будет неудачной.

Строка 11: мы закрываем соединение.

В серверной программе мы внесем следующие изменения.

2. server.py

Вот наша программа для сервера: server.py

Строка 11: для создания соединения мы используем объект клиента сокета. Мы упоминаем размер буфера, добавляя к методу 1024 байта (1 КБ) и сохраняем в сообщении переменной.

Строка 13: Затем мы печатаем метод.

Выход:

Мы снова открываем оба терминала и видим следующий вывод.

Вывод - Socket Программирование на Python

Здесь были рассмотрены основы программирования сокетов, но следует отметить, что это массивная область, и в программировании сокетов есть еще много вещей, которые необходимо охватить. Хорошее понимание основ помогло бы справиться со сложными сценариями клиент-сервер.

Рекомендуемые статьи

Это руководство по программированию сокетов в Python. Здесь мы обсудим концепцию сервера сокетов Python и клиента сокетов Python с реализацией кода. Вы также можете посмотреть следующие статьи, чтобы узнать больше -

  1. Вложенные циклы Python
  2. 15 главных особенностей Python
  3. 7 лучших Python IDE для Windows
  4. Различные методы в наборах Python