Junior
Czym jest gniazdo?
sobes.tech AI
Odpowiedź od AI
Socket (socket) to interfejs programistyczny (API) do komunikacji sieciowej między procesami. Zapewnia abstrakcję do pracy z protokołami sieciowymi, takimi jak TCP i UDP, umożliwiając programom wysyłanie i odbieranie danych przez sieć.
Reprezentuje punkt końcowy wymiany informacji. Za pomocą socketów, na przykład, serwer WWW może przyjmować żądania od przeglądarek, a aplikacja kliencka może wysyłać dane do serwera.
Szczególne typy socketów to:
- Strumieniowe (Stream sockets, SOCK_STREAM): Używają protokołu TCP, zapewniając niezawodne, uporządkowane dostarczanie danych. Nadają się do aplikacji, które wymagają gwarancji dostarczenia, np. HTTP czy FTP.
- Datagramowe (Datagram sockets, SOCK_DGRAM): Używają protokołu UDP, nie gwarantując dostarczenia ani kolejności pakietów. Są stosowane tam, gdzie ważna jest szybkość, np. w grach online czy transmisji wideo.
Podstawowe etapy pracy z socketami w aplikacji sieciowej (przykład dla TCP):
- Tworzenie socketu: Wywołanie
socket()w celu uzyskania deskryptora socketu. - Bind (przypisanie): Przypisanie socketu do określonego adresu IP i portu na lokalnej maszynie (dla socketu serwera).
- Nasłuchiwanie (Listen): Ustawienie socketu serwera w tryb nasłuchiwania na nadchodzące połączenia.
- Akceptacja (Accept): Akceptacja nadchodzącego połączenia od klienta, tworząc nowy socket dla tego połączenia.
- Nawiązanie połączenia (Connect): Połączenie klienta z serwerem przez IP i port (dla socketu klienta).
- Wysyłanie/Odbieranie (Send/Receive): Wymiana danych przez ustanowione połączenie.
- Zamykanie (Close): Zamknięcie socketu po zakończeniu pracy.
Przykład tworzenia socketu TCP w Pythonie:
import socket
# Tworzenie socketu TCP/IP
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Dalsze operacje: bind(), listen(), accept() dla serwera
# lub connect() dla klienta, send(), recv(), close()