Biblioteca de sockets
Sockets
SOCKET: Introduzido no BSD4.1 UNIX, 1981 • Explicitamente criados, usados e liberados pelas aplicações • Paradigma cliente-servidor • Dois tipos de serviço de transporte via socket API: • UDP - Datagrama não confiável • TCP – transferência confiável de cadeias de bytes de um processo para outro • Uma porta entre o processo de aplicação e o protocolo de transporte fim-afim (UDP ou TCP)
Biblioteca de programação Sockets
Daniel Fernandes Macedo
Funcionamento
Cliente deve contatar o servidor • Processo servidor já deve estar em execução • Servidor deve ter criado socket (porta) que aceita o contato do cliente • Cliente cria um socket TCP local: especificando endereço IP e número da porta do processo servidor • Quando o cliente cria o socket: cliente TCP estabelece conexão com o TCP do servidor à handshake de 3 vias Servidor Quando contatado pelo cliente, o TCP do servidor cria um novo socket para o processo servidor comunicar-se com o cliente • Permite ao servidor conversar com múltiplos clientes • Números da porta de origem enviados são usados para distinguir os clientes Ponto de vista da aplicação • TCP fornece a transferência confiável, em ordem de bytes (“pipe”) entre o cliente e o servido
Interface: sockets
Início socket( ) bind( ) listen( ) connect( ) Início
Criação da estrutura de dados
socket( )
Abertura passiva
Abertura ativa
Abertura completa
accept( ) send( ) recv( ) send( )
Comunicação propriamente dita recv( )
close( )
Encerramento da comunicação
close( )
Interface: sockets (com conexão)
• Para que dois processos se comuniquem, eles devem estabelecer uma conexão – mas como? • Parte passiva da abertura da conexão:
° um processo se diz pronto a receber conexões ° não há necessariamente identificação do outro
Interface: sockets
• Criação de um socket
AF_INET, AF_UNIX, AF_OSI (ou PF_*) 0 (default)
• Parte ativa da abertura da conexão:
° processo sabe como alcançar