Вы находитесь на странице: 1из 17

Advanced Python.

Introduction to socket IT Education


programming. Academy

WWW.ITEA.UA
www.itea.ua

socket
Низкоуровневая библиотека для сетевого программирования,
основанная на одноименной системной библиотеке BSD/UNIX.

Содержит ОО реализацию сокета (тип socket), и константы.


www.itea.ua

Address family
▪ AF_UNIX
▪ AF_INET (AF_INET6)
▪ AF_BLUETOOTH
www.itea.ua

Socket types
▪ SOCK_STREAM
▪ SOCK_DGRAM
▪ SOCK_RAW
▪ SOCK_RDM
▪ SOCK_SEQPACKET
www.itea.ua

Addressing methods
▪ Unicast
▪ Broadcast
▪ Multicast
▪ Anycast
▪ Geocast
www.itea.ua

Создание объекта socket

socket(AF_INET, SOCK_STREAM)
www.itea.ua

Socket methods (server)


▪ bind(address)

▪ listen([backlog])

▪ accept()
www.itea.ua

Socket methods (client)


▪ connect(address)
www.itea.ua

Socket methods (general)


▪ sendto(bytes, address)

▪ recvfrom(bufsize)

▪ send(bytes), sendall(bytes)

▪ recv(bufsize)

▪ close()
www.itea.ua

Socket modes
▪ blocking (default)

▪ nonblocking

▪ timeout
www.itea.ua

Timeouts
▪ setdefaulttimeout(sec)

▪ settimeout(sec)
www.itea.ua
www.itea.ua

Common errors
▪ BlockingIOError (EWOULDBLOCK)
▪ OSError (EADDRINUSE)
▪ ConnectionResetError (ECONNRESET)
▪ TimeoutError (ETIMEDOUT)
▪ ConnectionRefusedError (ECONNREFUSED)
www.itea.ua

Endianness
▪ ntohl
▪ ntohs
▪ htonl
▪ htons

Для более сложных сценариев - библиотека struct


www.itea.ua

struct
▪ pack(fmt, v1, v2, ...)
▪ pack_into(fmt, buffer, offset, v1, v2, ...)
▪ unpack(fmt, string)
▪ unpack_from(fmt, buffer[, offset=0])
www.itea.ua

Протоколы сериализации
данных
Для еще более сложных сценариев - передача
вложенных структур данных типа dict, list и сложных
кастомных типов - лучше воспользоваться готовыми
протоколами

▪ Protobuf
▪ Thrift
www.itea.ua

tools
▪ ping
▪ traceroute
▪ netcat
▪ netstat

Вам также может понравиться