Junior
Mi az a socket?
sobes.tech MI
Válasz az MI-től
Egy socket (socket) egy programozási felület (API), amely lehetővé teszi a folyamatok közötti hálózati kommunikációt. Absztrakciót nyújt a hálózati protokollok, például a TCP és az UDP kezeléséhez, lehetővé téve a programok számára, hogy adatokat küldjenek és fogadjanak a hálózaton keresztül.
Ez az információcsere végpontját jelenti. Például egy webkiszolgáló fogadhat kéréseket a böngészőktől, és egy kliensalkalmazás adatokat küldhet a szervernek.
A socketek két fő típusba sorolhatók:
- Áram (Stream sockets, SOCK_STREAM): A TCP protokollt használják, megbízható, sorrendben történő adatátvitelt biztosítanak. Olyan alkalmazásokhoz alkalmasak, amelyek garantálni akarják az adatküldést, például HTTP vagy FTP.
- Datagram (SOCK_DGRAM): UDP protokollt használ, nem garantálja a csomagok kézbesítését vagy sorrendjét. Ott használják, ahol a sebesség fontos, például online játékokban vagy streaming videókban.
A hálózati alkalmazásban a socketekkel való munka fő lépései (TCP példa):
- Socket létrehozása: A
socket()hívás segítségével socket leíró szerezhető. - Bind: A socket hozzárendelése egy adott IP-címhez és porthoz a helyi gépen (szerver socket esetén).
- Hallgatás (Listen): A szerver socketet hallgatási módba állítjuk, hogy fogadja a bejövő kapcsolatokat.
- Elfogadás (Accept): A bejövő kapcsolat elfogadása, és egy új socket létrehozása ehhez a kapcsolathoz.
- Kapcsolat létesítése (Connect): A kliens csatlakozik a szerverhez IP és port segítségével (kliens socket esetén).
- Küldés/Fogadás (Send/Receive): Az adatok cseréje a létrejött kapcsolaton keresztül.
- Socket lezárása (Close): A socket lezárása a munka befejezése után.
Python példakód TCP socket létrehozására:
import socket
# TCP/IP socket létrehozása
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# További műveletek: bind(), listen(), accept() szerverhez
# vagy connect() klienshez, send(), recv(), close()