Перейти к содержанию

Сетевое программирование на сокетах

Начало урока

Сетевое программирование на сокетах

Общайтесь с сетью напрямую, по одному байту, с помощью модуля socket

Главная идея: Сокет — это одна конечная точка двустороннего сетевого соединения. TCP-сокет даёт вам упорядоченный и надёжный поток байтов между двумя конечными точками, каждая из которых определяется IP-адресом и номером порта. Модуль socket — это тонкая обёртка Python над системным API BSD-сокетов. Всё, что находится выше — HTTP-клиенты, asyncio, веб-фреймворки, драйверы баз данных — в конечном счёте построено на этих вызовах. Понимание их снимает завесу тайны со всего стека.
К концу вы сможете:
  • создавать TCP-сокет и понимать AF_INET / SOCK_STREAM,
  • провести сервер через bind -> listen -> accept, а клиент через connect,
  • отправлять и получать байты (никогда str) и обрабатывать частичные чтения,
  • кадрировать сообщения, чтобы поток байтов превратился в отдельные сообщения,
  • построить минимальный эхо/чат-сервер и рассуждать о его компромиссах.

1. Что такое сокет на самом деле

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

import socket

# AF_INET  -> адресация IPv4 (host, port)
# SOCK_STREAM -> TCP: упорядоченный, надёжный поток байтов
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

Пара (host, port) — это адрес. Хост — это IP-адрес, например "127.0.0.1" (эта машина) или "0.0.0.0" (все интерфейсы); порт — это 16-битное число (0–65535), позволяющее одной машине держать множество независимых сервисов одновременно. Соединение однозначно определяется четвёркой (локальный ip, локальный порт, удалённый ip, удалённый порт), поэтому один порт сервера может обслуживать тысячи клиентов одновременно.

Продолжите этот урок на YourAIZone

В полном уроке — объяснение целиком, разобранные примеры, частые ошибки, тесты с мгновенной проверкой и ИИ-репетитор. Начните сразу как гость или создайте аккаунт, чтобы сохранять прогресс.

В полном уроке

  • Объяснение целиком
  • Разобранные примеры
  • Частые ошибки и как их избежать
  • Тестовые вопросы: 15
  • ИИ-репетитор, который отвечает на вопросы по теме
  • Отслеживание прогресса для ученика, родителей и учителя