Сокеттер менен тармактык программалоо
socket модулу менен тармак менен түз, ар бир байт боюнча сүйлөшүңүз
socket модулу — операциялык системанын BSD-сокет API'син жука ороп турган Python обёрткасы. Андан жогорудагылардын баары — 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, алыскы порт) менен бир маанилүү аныкталат, ошондуктан бир сервер порту миңдеген клиенттерди бир убакта тейлей алат.