Вебинары Разобраться в IT Реферальная программа Тесты
Программирование Аналитика Дизайн Маркетинг Управление проектами
23 Дек 2023
3 мин
4100

Как работать с сокетами в Python

Пройдите тест, узнайте какой профессии подходите

Изучите основы работы с сокетами в Python на примерах TCP и UDP серверов и клиентов в нашей практической статье!

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

Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.

Основные понятия

Сокет — это абстракция, представляющая собой конечную точку сетевого соединения. Вам потребуется создать два сокета для обмена данными: один на стороне клиента и один на стороне сервера. Клиент и сервер могут обмениваться данными, используя эти сокеты.

Существует два основных типа сокетов:

  1. TCP-сокеты (Transmission Control Protocol) — обеспечивают надежное соединение между двумя устройствами. Они обычно используются в веб-серверах и клиентах, почтовых серверах и других приложениях, где требуется надежность и порядок доставки данных.

  2. 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 и сможете использовать их в своих проектах. Не забывайте изучать дополнительные материалы и практиковаться, чтобы стать еще более опытным в этой области! 😉

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