Найти в Дзене
Retr0

Python socket

Оглавление

Вступление

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

Теория

Начнем с теории что же такое Сокет как говорится в Википедии сокет это... (ну как сказать в Википедии скорее своими словами)

Сокет — это программный интерфейс для доклада информационного обмена между системами.

Есть два типа сокета это:

  • Клиентский - даёт значение для отправки
  • Серверный - принимает и отдает

Сокеты работают на транспортном уровне протоколов и существуют 2 типа:

  • Потоковый(SOCK_STREAM) - сокет с уже имеющимися соединением на основе протокола ТСР
  • Дейтаграммный(SOCK_DGRAM) - сокет для которого не нужно установливать явного соединения

Также сокет состоит из IP & Порта

  • Ip-адрес - это уникальный сетевой адрес в комьютерной сети
  • Порт - это натуральное число, записаное в пратаколах таких как TCP, UPD и др.

В python для работы с сокетами используется уже встроенная библиотека socket. Самая много функциональная функция модуля является функция socket(), которая возвращает объект типа сокет, имеющим соответствующими функциями для работы с соединением.:

class socket.socket
sock = socket.socket()

Функции

  • socket.bind(address) - Привязывает сокет к адресу address/инициализирует IP-адрес и порт. Сокет не в каком случаи быть привязан до этого.
  • socket.listen([backlog]) - Перезапускает сервер в режим приема соединений. Параметр``backlog (int)`` – количество соединений, которые будет принимать сервер.
  • socket.accept() - Принимает соединение и блокирует систему в ожидании сообщения от клиента. В результате возвращает значение: conn
  • socket.recv(bufsize[, flags]) - Читает и дает данные в двоичном формате (набор байтов) из сокета. Параметр bufsize (int) – большое количество байтов в одном значении/сообщении
  • socket.send(bytes[, flags]) - Отправляет данные клиенту и возвращает параметр bytes (bytes) – в двоичные данных.
  • socket.close() - закрывает сокет (логично)

Работа с сокетом во многом похожа с работой с файловым объектом. Принцип - открыли соединение - считали данные - закрыли соединение.

А на этом всё, все пока люблю вас