Junior
Mis on socket?
sobes.tech AI
Vastus AI-lt
Pesa (socket) on rakendusliides (API) võrgusüsteemidevaheliseks suhtluseks. See pakub abstraktsiooni võrguprotokollidega, nagu TCP ja UDP, töötamiseks, võimaldades programmidel saata ja vastu võtta andmeid võrgus.
See on andmevahetuse punkt. Näiteks võib veebiserver socketite abil vastu võtta brauserite päringuid ning klientrakendus saata andmeid serverile.
Socketid on peamiselt kahte tüüpi:
- Voogsocketid (Stream sockets, SOCK_STREAM): Kasutavad TCP protokolli, tagavad usaldusväärse, järjekindla andmete kohaletoimetamise. Sobivad rakendustele, mille puhul on oluline garantii kohaletoimetamise kohta, näiteks HTTP või FTP.
- Dagramm socketid (Datagram sockets, SOCK_DGRAM): Kasutavad UDP protokolli, ei taga kohaletoimetamist ega paketite järjekorda. Kasutatakse seal, kus oluline on kiirus, näiteks online-mängudes või voogedastuses.
Põhietapid socketitega töötamisel võrgurakenduses (näide TCP):
- Socketi loomine:
socket()funktsiooni väljakutse socketi deskriptoru saamiseks. - Sidumine (Bind): Socketi sidumine kindlale IP-aadressile ja pordile (serveri socketi jaoks).
- Kuulamine (Listen): Serveri socketi muutmine kuulamisrežiimile sisenevate ühenduste jaoks.
- Vastuvõtt (Accept): Siseneva ühenduse vastuvõtmine kliendilt, uue socketi loomine selle ühenduse jaoks.
- Ühenduse loomine (Connect): Klient ühendub serveriga IP-aadressi ja pordi kaudu.
- Saatmine/Vastuvõtt (Send/Receive): Andmete vahetamine loodud ühenduse kaudu.
- Sulgemine (Close): Socketi sulgemine töö lõpetamisel.
Python näide TCP-socketi loomisel:
import socket
# TCP/IP socketi loomine
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Järgmised toimingud: bind(), listen(), accept() serverile
# või connect() kliendile, send(), recv(), close()