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):
- Vytvoření socketu: Volání
socket()pro získání deskriptoru socketu. - Bind: Přiřazení socketu k určité IP adrese a portu na místním stroji (pro serverový socket).
- Naslouchání (Listen): Nastavení serverového socketu do režimu naslouchání příchozím spojení.
- Přijímání (Accept): Přijetí příchozího spojení od klienta, vytvoření nového socketu pro toto spojení.
- Navázání spojení (Connect): Připojení klienta k serveru přes IP a port (pro klientský socket).
- Odesílání/Přijímání (Send/Receive): Výměna dat přes navázané spojení.
- 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()