Sockets-programmering is de fundamentele technologie achter communicatie op TCP/IP-netwerken. Een socket is een eindpunt van een tweerichtingsverbinding tussen twee programma’s die op een netwerk worden uitgevoerd. De socket biedt een bidirectioneel communicatie-eindpunt voor het verzenden en ontvangen van gegevens met een andere socket. Socketverbindingen lopen normaal gesproken tussen twee verschillende computers op een lokaal netwerk (LAN) of via internet, maar ze kunnen ook worden gebruikt voor communicatie tussen processen op een enkele computer.
Contactdozen en adressen
Socket-eindpunten op TCP/IP-netwerken hebben elk een uniek adres dat de combinatie is van een IP-adres en een TCP/IP-poortnummer. Omdat de socket is gebonden aan een specifiek poortnummer, kan de TCP-laag de toepassing identificeren die de gegevens moet ontvangen die ernaar worden verzonden. Bij het aanmaken van een nieuwe socket genereert de socketbibliotheek automatisch een uniek poortnummer op dat apparaat. De programmeur kan ook poortnummers specificeren in specifieke situaties.
Hoe server-sockets werken
Meestal draait een server op één computer en heeft hij toegang tot een socket die aan een specifieke poort is gebonden. De server wacht op een andere computer om een verbindingsverzoek te doen. De clientcomputer kent de hostnaam van de servercomputer en het poortnummer waarop de server luistert. De clientcomputer identificeert zichzelf en – als alles goed gaat – staat de server toe dat de clientcomputer verbinding maakt.
Socket-bibliotheken
In plaats van rechtstreeks te coderen naar socket-API’s op laag niveau, gebruiken netwerkprogrammeurs doorgaans socketbibliotheken. Twee veelgebruikte socketbibliotheken zijn Berkeley Sockets voor Linux/Unix-systemen en WinSock voor Windows-systemen. Een socketbibliotheek biedt een set API-functies die vergelijkbaar zijn met die programmeurs gebruiken om met bestanden te werken, zoals: open(), lezen(), schrijven(), en dichtbij().