“Socket C” es un término que a veces se usa para referirse al proceso de escribir código de socket en el lenguaje de programación C y, a veces, se usa para referirse al archivo de biblioteca real que contiene la implementación de algunas funciones de socket. El archivo de biblioteca de socket C real contiene implementaciones para diferentes funciones y macros que proporcionan la funcionalidad básica de socket proporcionada por las bibliotecas de lenguaje, aunque el archivo de socket C depende del sistema operativo y puede que no se implemente en algunos sistemas. Escribir código de socket C implica crear una interfaz con un protocolo de entrada y salida estándar, conocido como socket, y usarlo para enviar o recibir información, generalmente a través de una red o mediante una pieza de hardware. El lenguaje de programación C está diseñado para ser portátil, pero la programación de sockets se basa en algunas funciones específicas del sistema de bajo nivel, por lo que a veces puede ser difícil escribir programas en C que usen sockets pero que también mantengan la portabilidad entre sistemas.
Hay tres tipos básicos de enchufes que admite el enchufe C. El primero se conoce como datagrama, el segundo es un flujo y el tercero es acceso sin formato. Un datagrama es un tipo de socket que envía información en pequeños paquetes conocidos como paquetes. Cada paquete se envía desde una fuente con información sobre el socket de destino que busca en una red. Si bien un datagrama puede ser un método eficiente de comunicación a través de sockets y a menudo se usa para enviar correo electrónico, también tiene pérdidas, porque no se garantiza que ningún paquete que se envíe llegue al socket de destino.
Un socket de flujo establece una conexión con otro socket y la información se pasa directamente entre los sockets. Cuando se utiliza en la programación del conector C, este tipo de conector garantiza que todos los datos que se envían se reciban en el otro lado. Sin embargo, una complicación es que el socket a veces puede usar el bloqueo, lo que significa que el socket detendrá la ejecución de un proceso hasta que se reciba información o hasta que se cierre el socket, aunque el uso de subprocesos o procesos bifurcados puede resolver este problema en la mayoría de los casos. El acceso al socket sin procesar se proporciona como un medio para interactuar realmente a un nivel casi de hardware con cualquier dispositivo que aloje el socket.
Los sockets se utilizan comúnmente de diversas formas para las comunicaciones por Internet. El hardware y los controladores que permiten la conexión en red varían mucho según el sistema operativo, por lo que puede ser difícil localizar un archivo de biblioteca de socket C que admita todas las combinaciones posibles. Por esta razón, el archivo de socket C en sí, así como el archivo de encabezado de socket, a menudo contienen una larga lista de directivas de compilación condicional, por lo que se compilará de manera diferente en varios sistemas.