You are on page 1of 20

Socket

Definições
“Um soquete de rede (em inglês: network socket) é um ponto final
de um fluxo de comunicação entre processos através de uma rede de
computadores. Hoje em dia, a maioria da comunicação entre
computadores é baseada no Protocolo de Internet, portanto a
maioria dos soquetes de rede são soquetes de Internet.”

“Socket é um ponto de comunicação entre duas máquinas”


Fonte: Oracle
Definições

“Atravésdo socket podemos enviar mensagens entre máquinas,


exemplo mensagens de uma máquina X para a máquina Y através de
uma conexão estabelecida via socket.”
Origem
O conceito de soquetes (sockets) foi introduzido nas distribuições de
Berkeley (um famoso sistema do tipo UNIX, incluindo muitas
distribuições atuais que usam pedaços de código), é a razão pela
qual, às vezes, são chamados de soquetes BSD (Berkeley Software
Distribution).

Trata-se de um modelo para a comunicação entre processos


◦ para permitir a diversos processos de se comunicar tanto numa mesma
máquina quanto em uma rede TCP/IP.
Socket
Diversas aplicações que utilizamos no dia-a-dia fazem uso
de sockets pra se comunicar.

◦ Nosso navegador web utiliza sockets pra requisitar páginas.

◦ Quando um sistema se integra com um banco de dados ele abre


um socket.
Socket
É a Interface entre a camada de aplicação e a camada de transporte
Interface Berkeley
Também conhecido como BSD Socket, é a API de fato para programação.
Esta API é provida pelo SO, e assim permite os programadores controlar e utilizar os sockets.
Todos os sistemas operacionais modernos tem alguma implementação da interface de socket
Berkeley.
Se tornou o padrão de interface para conexão com a Internet, pois é uma implementação
original para TCP/IP.
Há outras interfaces como a Winsock para Windows, muito parecida com a de Berkeley.
Tipos de Comunicação
Síncrona
Após o remetente ter criado a mensagem podem ocorrer três momentos na qual ficará
bloqueado:
◦ Até o momento que a camada inferior captura a mensagem
◦ Até que o receptor receba a mensagem
◦ Até que o receptor processe a mensagem

Assíncrona
Servidor e Cliente NÃO SÃO BLOQUEADOS enquanto aguarda uma conexão de um cliente.
Funções da API
Create()
◦ Cria um novo terminal;
◦ SO reserva recursos para atender envio e recebimento;

Bind()
◦ Associa um endereço local ao socket;
◦ Lado Servidor

Listen()
◦ Anuncia a disposição para aceitar conexões;
Funções da API
accept()
◦ É bloqueante até chegar uma nova conexão.
◦ Aceita conexões vindas neste socket.
◦ Uma vez que uma conexão com sucesso é feita, é criado um novo socket (Remote Socket Address) com
as mesmas propriedades do original que deve ser usado para comunicação.

connect()
◦ Tentar estabelecer uma conexão ativamente
Funções API
send()
◦ Enviar alguns dados através da conexão ;

receive()
◦ Receber alguns dados da conexão;

close()
◦ Encerrar a conexão;
Tipos de conexão
Stream sockets
◦ orientados a conexão;
◦ canal exclusivo de comunicação entre cliente e servidor;
◦ garantem a ordem dos pacotes;
◦ considerados confiáveis e sem perda;
◦ quando se trata de se recuperar de falhas e perda de pacotes ele é mais burocrático e lento.
Tipos de conexão
Datagram sockets

◦ User Datagram Protocol (UDP);

◦ desconsidera ordem de pacotes, recuperação de falhas e garantia de ordem;

◦ ele é mais rápido que o TCP para alguns tipos de aplicações;


Tipos de conexão
Exemplo socket TCP
◦ Aplicação que realiza transações bancárias;
◦ não podem ter dados e valores corrompidos durante sua transmissão via rede.

Exemplo socket UDP


◦ Um jogo (indicar a oposição atual)
◦ Um filme
◦ Se um pacote de um frame não foi entregue, não tem a necessidade de requisitar novamente.
Socket TCP
Sockets orientados a conexão com garantias de entrega e ordenação.
É preciso estabelecer a conexão antes da troca de dados.
O servidor cria um socket especial para “escutar” pedidos de conexão do cliente.
Cada vez que o servidor aceita um pedido de conexão recebido no socket de escuta, um novo
socket é criado para realizar a comunicação. Assim é possível para o servidor voltar a aceitar
novos pedidos de conexão mais tarde (usando o socket de escuta).
Aplicações Cliente Servidor
Cliente
◦ O programa cliente primeiro cria um socket através da função socket();

◦ Conecta ao servidor através da função connect();

◦ inicia um loop (laço) que fica fazendo send() e receive();

◦ Para finalizar o socket chama a função close();


Aplicações Cliente Servidor
Sevidor
◦ Utiliza a mesma API de sockets; (inicialmente ele também cria um socket);
◦ Realiza o método bind(), associando o socket a uma porta do sistema operacional;
◦ Com o método listen() escutar novas conexões de clientes nessa porta;
◦ accept() é utilizada para começar a se comunicar (quando existe um Cliente);
◦ o servidor fica em um loop (laço) recebendo e enviando mensagens através do par de funções send() e
receive();
◦ Quando a comunicação com o cliente termina, o servidor volta a aguardar novas conexões de clientes.

You might also like