…………………………………………………………………………………………

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

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

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

Имеет некоторые недостатки

  • Трудно обнаружить разорванные соединения и автоматически восстановить это соединение.
  • Он работает только в одном канале. Для создания нескольких каналов требуется несколько подключений к сокету.

Несмотря на все эти ситуации, он предоставляет следующие преимущества.

  • Он поддерживает широкий спектр протоколов, таких как TCP/IP и UDP, что делает его подходящим для различных сетевых приложений.
  • Программирование сокетов упрощает обмен данными между процессами в реальном времени.

Как мы можем сделать программу для сокетов?

Мы будем использовать код в ссылке здесь.

Сначала мы установим заголовок. Цель заголовка — указать длину сообщения, отправляемого от клиента к серверу. (Мы установили его на 64).

Программирование сокетов начинается с импорта библиотеки сокетов и создания простого сокета. Вот так:

import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

AF_INET => относится к семейству адресов ipv4

SOCK_STREAM => тип сокета для TCP

SERVER = socket.gethostbyname(socket.gethostname())
# can be controlled with print(SERVER) 
ADDR = (SERVER,PORT)

С gethostbyname(socket.gethostname()) автоматически используется активный IP-адрес устройства.

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

server.bind(ADDR) 

.recv() используется для получения данных с сервера/клиента.

msg = conn.recv(msg_lenght).decode(FORMAT)

Мы можем закрыть соединение, которое мы установили с помощью .accept(), с помощью close()

conn.close()

Установить связь с клиентом. Метод accept() принимает входящий запрос на подключение от TCP-клиента.

server.listen() #  This allows the server to listen to incoming connections. 
conn, addr = server.accept()

Вот и все…

Для облегчения понимания вы также можете изучить диаграмму ниже.