Vad är Socket C?

”Socket C” är en term som ibland används för att hänvisa till processen att skriva socketkod i programmeringsspråket C och ibland används för att hänvisa till den faktiska biblioteksfilen som innehåller implementeringen för vissa socketfunktioner. Den faktiska socket C-biblioteksfilen innehåller implementeringar för olika funktioner och makron som tillhandahåller den grundläggande socketfunktionaliteten som tillhandahålls av språkbiblioteken, även om socket C-filen är operativsystemberoende och kanske inte implementeras på vissa system. Att skriva socket C-kod innebär att skapa ett gränssnitt med ett standardinmatnings- och utgångsprotokoll, känt som en socket, och använda den för att skicka eller ta emot information, vanligtvis över ett nätverk eller genom en hårdvara. Programmeringsspråket C är tänkt att vara portabelt, men socket-programmering förlitar sig på vissa systemspecifika funktioner på låg nivå, så det kan ibland vara svårt att skriva program i C som använder sockets men som också upprätthåller portabilitet över flera system.

Det finns tre grundläggande typer av uttag som uttag C stöder. Det första är känt som ett datagram, det andra är ett flöde och det tredje är rååtkomst. Ett datagram är en typ av socket som skickar information i små paket som kallas paket. Varje paket skickas från en källa med information om destinationssocket det söker över ett nätverk. Även om ett datagram kan vara en effektiv metod för att kommunicera via sockets och ofta används för att skicka e-post, är det också förlustbringande, eftersom inget paket som skickas garanterat kommer fram till destinationssocket.

Ett stream-uttag gör en anslutning till ett annat uttag och information skickas direkt mellan uttagen. När den används i socket C-programmering säkerställer denna typ av socket att all data som skickas tas emot på andra sidan. En komplikation är dock att socket ibland kan använda blockering, vilket betyder att socket kommer att stoppa exekvering av en process tills information tas emot eller tills socket stängs, även om användning av trådar eller forked processer kan lösa detta problem i de flesta fall. Raw socket-åtkomst tillhandahålls som ett sätt att faktiskt gränssnitt på en nästan hårdvarunivå med vilken enhet som helst som är värd för socket.

Uttag används vanligtvis i olika former för Internetkommunikation. Hårdvaran och drivrutinerna som tillåter nätverksarbete varierar mycket beroende på operativsystem, så det kan vara svårt att hitta en socket C-biblioteksfil som stöder alla möjliga kombinationer. Av denna anledning innehåller själva socket C-filen, såväl som socket-huvudfilen, ofta en lång lista med villkorliga kompileringsdirektiv så att den kommer att kompilera olika på olika system.