Sobes.tech
Junior

Co je to socket?

sobes.tech AI

Odpověď od AI

Socket (socket) je rozhraní API pro síťovou komunikaci mezi procesy. Poskytuje abstrakci pro práci s síťovými protokoly, jako jsou TCP a UDP, umožňující programům odesílat a přijímat data přes síť.

Představuje konečný bod pro výměnu informací. Pomocí socketů může například webový server přijímat požadavky od prohlížečů a klientská aplikace může odesílat data na server.

Sokety mohou být hlavně dvou typů:

  • Streamové (SOCK_STREAM): Používají protokol TCP, zajišťují spolehlivé, seřazené doručení dat. Vhodné pro aplikace, které vyžadují garantované doručení, například HTTP nebo FTP.
  • Datagramové (SOCK_DGRAM): Používají protokol UDP, nezaručují doručení nebo pořadí paketů. Používají se tam, kde je důležitá rychlost, například v online hrách nebo streamování videa.

Hlavní kroky práce se sockety v síťové aplikaci (příklad pro TCP):

  1. Vytvoření socketu: Volání socket() pro získání deskriptoru socketu.
  2. Bind: Přiřazení socketu k určité IP adrese a portu na místním stroji (pro serverový socket).
  3. Naslouchání (Listen): Nastavení serverového socketu do režimu naslouchání příchozím spojení.
  4. Přijímání (Accept): Přijetí příchozího spojení od klienta, vytvoření nového socketu pro toto spojení.
  5. Navázání spojení (Connect): Připojení klienta k serveru přes IP a port (pro klientský socket).
  6. Odesílání/Přijímání (Send/Receive): Výměna dat přes navázané spojení.
  7. Uzavření (Close): Uzavření socketu po ukončení práce.

Příklad vytvoření TCP socketu v Pythonu:

import socket

# Vytvoření TCP/IP socketu
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Další operace: bind(), listen(), accept() pro server
# nebo connect() pro klienta, send(), recv(), close()