„Socket C” to termin, który czasami jest używany w odniesieniu do procesu pisania kodu gniazda w języku programowania C, a czasami w odniesieniu do rzeczywistego pliku biblioteki, w którym znajduje się implementacja niektórych funkcji gniazd. Rzeczywisty plik biblioteki gniazd C zawiera implementacje różnych funkcji i makr, które zapewniają podstawową funkcjonalność gniazd dostarczaną przez biblioteki językowe, chociaż plik C gniazd jest zależny od systemu operacyjnego i może nie być zaimplementowany w niektórych systemach. Pisanie kodu gniazda C obejmuje utworzenie interfejsu ze standardowym protokołem wejścia i wyjścia, znanym jako gniazdo, i użycie go do wysyłania lub odbierania informacji, zwykle przez sieć lub sprzęt. Język programowania C ma być przenośny, ale programowanie za pomocą gniazd opiera się na niektórych funkcjach specyficznych dla systemu niskiego poziomu, więc czasami może być trudne pisanie programów w C, które używają gniazd, ale także zachowują przenośność między systemami.
Istnieją trzy podstawowe typy gniazd, które obsługuje gniazdo C. Pierwszy jest znany jako datagram, drugi to strumień, a trzeci to dostęp surowy. Datagram to rodzaj gniazda, które wysyła informacje w małych wiązkach zwanych pakietami. Każdy pakiet jest wysyłany ze źródła z informacją o gnieździe docelowym, którego szuka w sieci. Chociaż datagram może być wydajną metodą komunikacji przez gniazda i często jest używany do wysyłania wiadomości e-mail, jest on również stratny, ponieważ żaden wysłany pakiet nie dotrze do gniazda docelowego.
Gniazdo strumienia nawiązuje połączenie z innym gniazdem, a informacje są przekazywane bezpośrednio między gniazdami. Ten typ gniazda używany w programowaniu w gnieździe C zapewnia, że wszystkie wysyłane dane są odbierane po drugiej stronie. Jedną z komplikacji jest jednak to, że gniazdo może czasami używać blokowania, co oznacza, że gniazdo zatrzyma wykonywanie procesu do czasu otrzymania informacji lub zamknięcia gniazda, chociaż w większości przypadków użycie wątków lub procesów rozwidlonych może rozwiązać ten problem. Surowy dostęp do gniazda jest dostarczany jako środek do faktycznego komunikowania się na prawie sprzętowym z dowolnym urządzeniem obsługującym gniazdo.
Gniazda są powszechnie używane w różnych formach komunikacji internetowej. Sprzęt i sterowniki umożliwiające działanie sieci różnią się znacznie w zależności od systemu operacyjnego, dlatego znalezienie pliku biblioteki typu Socket C, który obsługuje wszystkie możliwe kombinacje, może być trudne. Z tego powodu sam plik gniazda C, jak również plik nagłówkowy gniazda, często zawiera długą listę dyrektyw kompilacji warunkowej, więc będzie się kompilował inaczej na różnych systemach.