Sobes.tech
Junior

Wat is een socket?

sobes.tech AI

Antwoord van AI

Een socket (socket) is een programmeerinterface (API) voor netwerkinteractie tussen processen. Het biedt een abstractie voor het werken met netwerkprotocollen zoals TCP en UDP, waardoor programma's gegevens via het netwerk kunnen verzenden en ontvangen.

Het vertegenwoordigt een eindpunt voor informatie-uitwisseling. Met sockets kan bijvoorbeeld een webserver verzoeken van browsers accepteren, en een clientapplicatie gegevens naar de server sturen.

Sockets kunnen hoofdzakelijk in twee hoofdtypen worden onderverdeeld:

  • Stroom (Stream sockets, SOCK_STREAM): Gebruiken het TCP-protocol, dat betrouwbare, geordende levering van gegevens garandeert. Geschikt voor toepassingen die garanties voor levering vereisen, zoals HTTP of FTP.
  • Datagram (SOCK_DGRAM): Gebruiken het UDP-protocol, garanderen niet de levering of de volgorde van pakketten. Worden gebruikt waar snelheid belangrijk is, zoals bij online games of streaming video.

De belangrijkste stappen voor het werken met sockets in een netwerkapplicatie (voorbeeld voor TCP):

  1. Aanmaken van een socket: Aanroep socket() om een socketdescriptor te verkrijgen.
  2. Bind: Bind de socket aan een specifiek IP-adres en poort op de lokale machine (voor de server socket).
  3. Luisteren (Listen): Zet de server socket in de luistermodus voor inkomende verbindingen.
  4. Acceptatie (Accept): Accepteer een inkomende verbinding van een client, en maak een nieuwe socket voor die verbinding.
  5. Verbinding maken (Connect): Verbind de client met de server via IP en poort (voor de client socket).
  6. Verzenden/Ophalen (Send/Receive): Wissel gegevens uit via de gevestigde verbinding.
  7. Sluiten (Close): Sluit de socket na voltooiing.

Voorbeeld van het maken van een TCP-socket in Python:

import socket

# Maak een TCP/IP-socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Verdere operaties: bind(), listen(), accept() voor de server
# of connect() voor de client, send(), recv(), close()