Wat is socket C?
"Socket C" is een term die soms wordt gebruikt om te verwijzen naar het proces van het schrijven van socketcode in de programmeertaal C en soms wordt gebruikt om te verwijzen naar het eigenlijke bibliotheekbestand dat de implementatie bevat voor sommige socketfuncties. Het eigenlijke socket C-bibliotheekbestand bevat implementaties voor verschillende functies en macro's die de basis-socketfunctionaliteit bieden die door de taalbibliotheken wordt geleverd, hoewel het socket C-bestand afhankelijk is van het besturingssysteem en op sommige systemen mogelijk niet wordt geïmplementeerd. Het schrijven van socket C-code omvat het maken van een interface met een standaard invoer- en uitvoerprotocol, bekend als een socket, en deze gebruiken om informatie te verzenden of ontvangen, meestal via een netwerk of via een stuk hardware. De programmeertaal C is bedoeld om draagbaar te zijn, maar socketprogrammering is afhankelijk van enkele systeemspecifieke functies op laag niveau, dus het kan soms moeilijk zijn om programma's in C te schrijven die sockets gebruiken maar ook draagbaarheid tussen systemen behouden.
Er zijn drie basistypen sockets die socket C ondersteunt. De eerste staat bekend als een datagram, de tweede is een stream en de derde is onbewerkte toegang. Een datagram is een type socket dat informatie verzendt in kleine bundels die pakketjes worden genoemd. Elk pakket wordt verzonden vanuit een bron met informatie over de doelsocket die het zoekt via een netwerk. Hoewel een datagram een efficiënte manier van communiceren via sockets kan zijn en vaak wordt gebruikt om e-mail te verzenden, is het ook lossy, omdat geen enkel pakket dat wordt verzonden gegarandeerd bij de doelsocket aankomt.
Een stream-socket maakt verbinding met een andere socket en informatie wordt rechtstreeks tussen de sockets doorgegeven. Bij gebruik in socket C-programmering zorgt dit type socket ervoor dat alle verzonden gegevens aan de andere zijde worden ontvangen. Een complicatie is echter dat de socket soms blokkering kan gebruiken, wat betekent dat de socket de uitvoering van een proces stopt totdat informatie wordt ontvangen of totdat de socket wordt gesloten, hoewel het gebruik van threads of gevorkte processen dit probleem in de meeste gevallen kan oplossen. Raw-sockettoegang wordt geboden als een manier om op bijna hardware-niveau daadwerkelijk te communiceren met elk apparaat dat de socket host.
Sockets worden meestal gebruikt in verschillende vormen voor internetcommunicatie. De hardware en stuurprogramma's waarmee netwerken kunnen optreden, verschillen sterk per besturingssysteem, dus het kan moeilijk zijn om een socket C-bibliotheekbestand te vinden dat alle mogelijke combinaties ondersteunt. Om deze reden bevat het socket C-bestand zelf, evenals het socket-headerbestand, vaak een lange lijst van voorwaardelijke compilatierichtlijnen, zodat het anders op verschillende systemen zal compileren.