…………………………………………………………………………………………
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()
Вот и все…
Для облегчения понимания вы также можете изучить диаграмму ниже.