O que é um soquete?
Os soquetes permitem a comunicação entre dois processos diferentes na mesma máquina ou em máquinas diferentes. Para ser mais preciso, é uma maneira de falar com outros computadores usando descritores de arquivo Unix padrão. No Unix, cada ação de I / O é feita escrevendo ou lendo um descritor de arquivo. Um descritor de arquivo é apenas um inteiro associado a um arquivo aberto e pode ser uma conexão de rede, um arquivo de texto, um terminal ou qualquer outra coisa.
Para um programador, um soquete se parece e se comporta muito como um descritor de arquivo de baixo nível. Isso ocorre porque comandos como read () e write () funcionam com soquetes da mesma forma que funcionam com arquivos e canais.
Os soquetes foram introduzidos pela primeira vez no 2.1BSD e posteriormente refinados em sua forma atual com o 4.2BSD. O recurso de soquetes agora está disponível com as versões mais recentes do sistema UNIX.
Onde o soquete é usado?
Um Unix Socket é usado em uma estrutura de aplicativo cliente-servidor. Um servidor é um processo que executa algumas funções a pedido de um cliente. A maioria dos protocolos de nível de aplicativo, como FTP, SMTP e POP3, usam soquetes para estabelecer a conexão entre o cliente e o servidor e, em seguida, para a troca de dados.
Tipos de soquete
Existem quatro tipos de soquetes disponíveis para os usuários. Os dois primeiros são mais comumente usados e os dois últimos raramente são usados.
Presume-se que os processos se comuniquem apenas entre soquetes do mesmo tipo, mas não há nenhuma restrição que impeça a comunicação entre soquetes de diferentes tipos.
Stream Sockets- A entrega em ambiente de rede é garantida. Se você enviar pelo soquete de fluxo três itens "A, B, C", eles chegarão na mesma ordem - "A, B, C". Esses sockets usam TCP (Transmission Control Protocol) para transmissão de dados. Se a entrega for impossível, o remetente receberá um indicador de erro. Os registros de dados não têm limites.
Datagram Sockets- A entrega em um ambiente de rede não é garantida. Eles não têm conexão porque você não precisa ter uma conexão aberta como no Stream Sockets - você cria um pacote com as informações de destino e o envia. Eles usam UDP (User Datagram Protocol).
Raw Sockets- Fornecem aos usuários acesso aos protocolos de comunicação subjacentes, que suportam abstrações de soquete. Esses sockets são normalmente orientados a datagramas, embora suas características exatas dependam da interface fornecida pelo protocolo. Soquetes brutos não se destinam ao usuário geral; eles foram fornecidos principalmente para aqueles interessados em desenvolver novos protocolos de comunicação ou para obter acesso a alguns dos recursos mais enigmáticos de um protocolo existente.
Sequenced Packet Sockets- Eles são semelhantes a um soquete de fluxo, com a exceção de que os limites do registro são preservados. Essa interface é fornecida apenas como parte da abstração de soquete Network Systems (NS) e é muito importante na maioria dos aplicativos NS sérios. Os soquetes de pacotes sequenciados permitem que o usuário manipule os cabeçalhos do Protocolo de Pacote de Sequência (SPP) ou do Protocolo de Datagrama da Internet (IDP) em um pacote ou grupo de pacotes, seja escrevendo um cabeçalho de protótipo junto com os dados a serem enviados, seja por especificando um cabeçalho padrão a ser usado com todos os dados de saída e permite ao usuário receber os cabeçalhos nos pacotes de entrada.
O que vem a seguir?
Os próximos capítulos têm como objetivo fortalecer seus fundamentos e preparar uma base antes que você possa escrever programas de servidor e cliente usando socket . Se você deseja ver diretamente como escrever um programa cliente e servidor, pode fazê-lo, mas não é recomendado. É altamente recomendável que você vá passo a passo e conclua esses poucos capítulos iniciais para fazer sua base antes de prosseguir com a programação.