Введение в сокет-программирование в 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 с реализацией кода. Вы также можете посмотреть следующие статьи, чтобы узнать больше -
- Вложенные циклы Python
- 15 главных особенностей Python
- 7 лучших Python IDE для Windows
- Различные методы в наборах Python