O que é o soquete C?
"Soquete C" é um termo que às vezes é usado para se referir ao processo de gravação de código de soquete na linguagem de programação C e às vezes é usado para se referir ao arquivo de biblioteca real que mantém a implementação de algumas funções de soquete. O arquivo real da biblioteca do soquete C contém implementações para diferentes funções e macros que fornecem a funcionalidade básica do soquete fornecida pelas bibliotecas de idiomas, embora o arquivo do soquete C seja dependente do sistema operacional e possa não ser implementado em alguns sistemas. A gravação do código do soquete C envolve a criação de uma interface com um protocolo de entrada e saída padrão, conhecido como soquete, e o uso para enviar ou receber informações, geralmente através de uma rede ou através de um hardware. A linguagem de programação C deve ser portátil, mas a programação de soquetes depende de algumas funções específicas do sistema de baixo nível; portanto, às vezes pode ser difícil escrever programas em C que usem soquetes, mas também mantenham a portabilidade entre sistemas.
Existem três tipos básicos de soquetes suportados pelo soquete C. O primeiro é conhecido como datagrama, o segundo é um fluxo e o terceiro é o acesso bruto. Um datagrama é um tipo de soquete que envia informações em pequenos pacotes conhecidos como pacotes. Cada pacote é enviado de uma fonte com informações no soquete de destino que ele está buscando através de uma rede. Embora um datagrama possa ser um método eficiente de comunicação através de soquetes e geralmente seja usado para enviar e-mail, também é prejudicial, porque não é garantido que nenhum pacote enviado chegue ao soquete de destino.
Um soquete de fluxo faz uma conexão com outro soquete e as informações são passadas diretamente entre os soquetes. Quando usado na programação do soquete C, esse tipo de soquete garante que todos os dados enviados sejam recebidos do outro lado. Uma complicação, no entanto, é que o soquete às vezes pode usar bloqueio, o que significa que o soquete interromperá a execução de um processo até que as informações sejam recebidas ou até que o soquete seja fechado, embora o uso de threads ou processos bifurcados possa resolver esse problema na maioria dos casos. O acesso bruto ao soquete é fornecido como um meio de realmente interagir em um nível quase de hardware com qualquer dispositivo que esteja hospedando o soquete.
Soquetes geralmente são usados de várias formas para comunicações na Internet. O hardware e os drivers que permitem que a rede ocorra variam muito de acordo com o sistema operacional; portanto, pode ser difícil localizar um arquivo de biblioteca do soquete C que ofereça suporte a todas as combinações possíveis. Por esse motivo, o próprio arquivo do soquete C, bem como o arquivo de cabeçalho do soquete, geralmente contém uma longa lista de diretivas de compilação condicional, de forma que seja compilado de maneira diferente em vários sistemas.