Sobes.tech
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):

  1. Tworzenie socketu: Wywołanie socket() w celu uzyskania deskryptora socketu.
  2. Bind (przypisanie): Przypisanie socketu do określonego adresu IP i portu na lokalnej maszynie (dla socketu serwera).
  3. Nasłuchiwanie (Listen): Ustawienie socketu serwera w tryb nasłuchiwania na nadchodzące połączenia.
  4. Akceptacja (Accept): Akceptacja nadchodzącego połączenia od klienta, tworząc nowy socket dla tego połączenia.
  5. Nawiązanie połączenia (Connect): Połączenie klienta z serwerem przez IP i port (dla socketu klienta).
  6. Wysyłanie/Odbieranie (Send/Receive): Wymiana danych przez ustanowione połączenie.
  7. 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()