Sobes.tech
Junior

Čo je to socket?

sobes.tech AI

Odpoveď od AI

Soket (socket) je rozhranie API pre sieťovú komunikáciu medzi procesmi. Poskytuje abstrakciu pre prácu s sieťovými protokolmi ako TCP a UDP, umožňujúc programom odosielať a prijímať dáta cez sieť.

Predstavuje koncový bod pre výmenu informácií. Pomocou soketov môže napríklad webový server prijímať požiadavky od prehliadačov a klientska aplikácia môže odosielať dáta na server.

Sokety môžu byť hlavne dva typy:

  • Streamové (SOCK_STREAM): Používajú protokol TCP, zabezpečujú spoľahlivé, zoradené doručenie dát. Sú vhodné pre aplikácie, ktoré vyžadujú garanciu doručenia, ako HTTP alebo FTP.
  • Datagramové (SOCK_DGRAM): Používajú protokol UDP, nezaručujú doručenie alebo poradie paketov. Používajú sa tam, kde je dôležitá rýchlosť, napríklad v online hrách alebo streamovaní videa.

Hlavné kroky práce so soketmi v sieťovej aplikácii (príklad pre TCP):

  1. Vytvorenie soketu: Volanie socket() na získanie deskriptora soketu.
  2. Bind: Priradenie soketu k určitej IP adrese a portu na lokálnom stroji (pre serverový soket).
  3. Počúvanie (Listen): Nastavenie serverového soketu do režimu počúvania prichádzajúcich spojení.
  4. Prijatie (Accept): Prijatie prichádzajúceho spojenia od klienta, vytvorenie nového soketu pre toto spojenie.
  5. Ustanovenie spojenia (Connect): Klient sa pripojí k serveru cez IP a port (pre klientsky soket).
  6. Odoslanie/Prijatie (Send/Receive): Výmena dát cez naviazané spojenie.
  7. Zatvorenie (Close): Zatvorenie soketu po ukončení práce.

Príklad vytvorenia TCP soketu v Pythone:

import socket

# Vytvorenie TCP/IP soketu
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Ďalšie operácie: bind(), listen(), accept() pre server
# alebo connect() pre klient, send(), recv(), close()