Сокеты являются основой для работы с сетью в Python, и они предоставляют возможность обмениваться данными между двумя программами через сеть. В этой статье мы рассмотрим основные понятия работы с сокетами, а также покажем примеры использования сокетов в Python.
Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.
Основные понятия
Сокет — это абстракция, представляющая собой конечную точку сетевого соединения. Вам потребуется создать два сокета для обмена данными: один на стороне клиента и один на стороне сервера. Клиент и сервер могут обмениваться данными, используя эти сокеты.
Существует два основных типа сокетов:
-
TCP-сокеты (Transmission Control Protocol) — обеспечивают надежное соединение между двумя устройствами. Они обычно используются в веб-серверах и клиентах, почтовых серверах и других приложениях, где требуется надежность и порядок доставки данных.
-
UDP-сокеты (User Datagram Protocol) — обеспечивают передачу данных без установления соединения. Они обычно используются в видео и аудио потоковых приложениях, играх и других приложениях, где скорость важнее, чем надежность.
Создание сокетов в Python
Для работы с сокетами в Python используется модуль socket. Давайте создадим простой TCP-сервер и клиент для демонстрации.
TCP-сервер
import socket
# Создаем сокет
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Привязываем сокет к IP-адресу и порту
server_socket.bind(('localhost', 12345))
# Слушаем входящие соединения
server_socket.listen(1)
print("Сервер запущен и ожидает подключений...")
# Принимаем входящее соединение
client_socket, client_address = server_socket.accept()
print(f"Подключение установлено с {client_address}")
# Получаем данные от клиента
data = client_socket.recv(1024)
print(f"Получены данные: {data}")
# Закрываем соединения
client_socket.close()
server_socket.close()
Изучайте Python на онлайн-курсе от Skypro «Python-разработчик». Программа рассчитана на новичков без опыта программирования и технического образования. Курс проходит в формате записанных коротких видеолекций. Будет много проверочных заданий и мастер-классов. В конце каждой недели — живая встреча с экспертами в разработке для ответов на вопросы и разбора домашек.
TCP-клиент
import socket
# Создаем сокет
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Подключаемся к серверу
client_socket.connect(('localhost', 12345))
# Отправляем данные серверу
client_socket.sendall(b'Hello, server!')
# Закрываем соединение
client_socket.close()
Работа с UDP-сокетами
Работа с UDP-сокетами немного отличается от работы с TCP-сокетами. Давайте посмотрим на примеры сервера и клиента, использующих UDP-сокеты.
UDP-сервер
import socket
# Создаем сокет
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Привязываем сокет к IP-адресу и порту
server_socket.bind(('localhost', 12345))
print("Сервер запущен и ожидает входящих данных...")
# Получаем данные от клиента
data, client_address = server_socket.recvfrom(1024)
print(f"Получены данные от {client_address}: {data}")
# Закрываем сокет
server_socket.close()
На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.
UDP-клиент
import socket
# Создаем сокет
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Отправляем данные серверу
client_socket.sendto(b'Hello, server!', ('localhost', 12345))
# Закрываем сокет
client_socket.close()
Теперь вы знакомы с основами работы с сокетами в Python и сможете использовать их в своих проектах. Не забывайте изучать дополнительные материалы и практиковаться, чтобы стать еще более опытным в этой области! 😉
Перейти в телеграм, чтобы получить результаты теста





Забрать
Добавить комментарий