Servidor UDP. Programação Sockets Volnys Bernal. Servidor UDP Resumo das Chamadas UDP. Resumo de Chamadas UDP. Resumo de Chamadas UDP

Documentos relacionados
Servidor UDP Volnys Borges Bernal Departamento de Sistemas Eletrônicos Escola Politécnica da USP

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Resumo das chamadas UDP. Resumo de Chamadas UDP.

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Chamadas UDP. Resumo de Chamadas UDP.

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Chamadas UDP. Resumo de Chamadas UDP.

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP

Cliente TCP. Programação sockets. Agenda. Cliente TCP. Chamadas sockets para TCP. Chamada socket() Chamada socket()

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP

Servidor TCP Volnys Borges Bernal Depto de Engenharia de Sistemas Eletrônicos Escola Politécnica da USP

Introdução à Programação Sockets

Introdução à Programação Sockets. Programação Sockets. (c) Volnys Bernal. Agenda. Introdução à Programação Sockets

Introdução à Programação Sockets. Programação Sockets. (c) Volnys Bernal. Agenda. Introdução à Programação Sockets

Aula de Socket. Rafael De Tommaso do Valle

Introdução à Programação Sockets. Programação Sockets. (c) Volnys Bernal. Agenda. Introdução à Programação Sockets

Sumário. Introdução ao TCP/IP e à Internet API Sockets para comunicação via redes Exemplos

Programação com Sockets TCP e UDP - Cliente. Gustavo Leitão

Soquetes TCP. Jean Ribeiro Damasceno. Escola de Engenharia Universidade Federal Fluminense (UFF) Rua Passo da Pátria, 156 Niterói RJ Brasil

Programação de Aplicações em. Rede usando Sockets

Sistemas Operacionais - Básico e Avançado - Prof. Celso Maciel da Costa Mestrado em Informática - PUCRS

Sockets - Conceitos Básicos. COMUNICAÇÃO ENTRE PROCESSOS Sockets. Conceitos Básicos. Tipos de Sockets

Programação em Sockets visando verificar a diferença entre transmissão confiável (TCP) e não confiável (UDP)

Introdução à Programação com Sockets. Fernando Jorge Silveira Filho Daniel Sadoc Menasché

Sockets. André Restivo. April 29, Faculdade de Engenharia da Universidade do Porto. André Restivo (FEUP) Sockets April 29, / 27

Sistemas Distribuídos

Resolução de Nomes Volnys Borges Bernal Deparatamento de Sistemas Eletrônicos Escola Politécnica da USP

Comunicação entre processos. Sistema centralizado

Comunicação entre Processos

Leandro Soares de Sousa (DSc.) Página: Aula 05 - desenvolvimento com sockets

Aula Prática. Comunicação em SOCKTS. Disciplina: INF01151

Sistemas de Operação Sockets

Redes de Computadores e Aplicações

Volnys Borges Bernal. Agenda. Resolução de Nomes. Introdução à resolução de nomes. Introdução à resolução de nomes

Volnys Bernal 1. Trabalho Chat UDP. PSI 2653 Meios Eletrônicos Interativos I

Leandro Soares de Sousa (DSc.) Página: Parte III

Programação com Sockets. Redes de Computadores I 2007/2008

Redes de Computadores

Sistemas Operacionais II

Programação com Sockets

Redes de Computadores

camada de transporte SOCKET TCP UDP

TROCA DE MENSAGENS SOCKETS. Comunicando processos através de SOCKETS. SOCKETS com conexão. SOCKETS sem conexão

Por Fernando Koyanagi

MC823 Atividade 1: Cliente/Servidor TCP Iterativo. 3 Modificando o servidor para retornar data e hora

Programação TCP/IP (sockets)

Exercício Programa Mini Web Server

COMUNICAÇÃO ENTRE APLICAÇÕES. Laboratórios de Informática João Paulo Barraca, André Zúquete, Diogo Gomes

Cliente/Servidor. Programação com Sockets. Graça Bressan. Graça Bressan/LARC

Comunicação entre Processos. 1. Pipes 2. Fifos 3. Sockets

Comunicação entre Processos por Troca de Mensagens. Prof. Celso maciel da Costa

06/10/2015. Modelo TCP/IP Camada de Transporte DISCIPLINA: TECNOLOGIA DE REDES DE COMPUTADORES. UDP User Datagram Protocol. UDP User Datagram Protocol

UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA ENGENHARIA DE COMPUTAÇÃO

Comunicação entre Processos

Sockets: Sumário. Resumo das Propriedades de UDP e de TCP

Modelo Cliente/Servidor e Introdução a Sockets

MC823 Laboratório de Teleprocessamento e Redes

Programação Orientada a Objetos para Redes de Computadores

Programação Orientada a Objetos para Redes de Computadores. Modelo Cliente-Servidor. Comunicação entre Processos. O que é um Socket?

Camada de Transporte Protocolos TCP e UDP

Projeto e Desenvolvimento de Aplicações Cliente / Servidoras Para a INTERNET

Bibliotecas. Apoio à Programação Distribuída. Socket. Socket. bibliotecas bibliotecas+ferramentas linguagens de programação distribuídas

Sistemas Operacionais:

API de Sockets. Modelo Cliente/Servidor (2/2) Modelo Cliente/Servidor (1/2) José Pedro Oliveira Sistemas Operativos I

Problemas relacionados a exclusão mútua

sockets interprocess communication Taisy Weber

INF01018 Aula Prática 1 Cliente-Servidor e Multicast

Sockets e Threads em Java

Sockets IPv6 para C/C++ - Criando e Portando Aplicações

SEM 544 Desenvolvimento de Produtos Mecatrônicos

Agenda. Rede de Computadores (Técnico em Informática) Protocolo TCP Transmission Control Protocol. Introdução ao Protocolo TCP

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

Programação de Sockets em C/C++

Tecnologia de Redes. NAT e Masquerade

Redes de Computadores

Redes de Computadores II. Programação com Sockets em Python

Trabalho 02: Cliente e Servidor em C

Threads. Agenda. Threads. Processo. Processo. Processo. Processo. (c) Volnys B. Bernal Versão de 22/3/2012

Módulo 3 Nível Transporte

Programação com sockets (em Java)

Comunicação. Carlos A. G. Ferraz 25/6/2003. Sistemas Distribuídos 1. Tópicos. Camadas. Transmissão de dados. Marshalling/Unmarshalling.

21/11/16. Histórico. Interfaces e Periféricos Redes como interfaces. Abstração da infraestrutura de rede como interface

Programando sistemas distribuídos com objetos distribuídos na rede TCP/IP. Prof. Me. Sérgio Carlos Portari Júnior

Desenvolvimento de Produtos Mecatrônicos

Módulo 08 - Protocolo IP Página 1. Tecnologia de Redes. Volnys B. Bernal Versão de 15/06/2000. Agenda. Tecnologia de Redes

Canais de Comunicação

PROTOCOLOS DE COMUNICAÇÃO

Protocolo TCP. Redes TCP-IP. Agenda. Protocolo TCP Transmission Control Protocol. Introdução ao Protocolo TCP. Introdução ao Protocolo TCP

FUNDAMENTOS DE REDES DE COMPUTADORES Unidade 5 Camada de Transporte e Aplicação. Luiz Leão

Redes de Computadores. Prof. André Y. Kusumoto

Redes de Computadores

! Introdução! Pacote TCP! Número de Seqüência TCP! Estados TCP. " Estabelecimento de conexão " Troca de dados " Encerramento de conexão. !

Tecnologia de Redes. Arquitetura de Rede de Computadores

TRANSPORTE. Prof. Me. Hélio Esperidião

Sistemas Distribuídos Aula 2

Engenharia Elétrica Eletrônica Slides 20: TCP/IP em Winsocks 2. API do Windows para programar utilizando o protocolo TCP/IP Prof. Jean Marcelo SIMÃO

Agenda. Protocolo TCP. Introdução ao Protocolo TCP. Introdução ao Protocolo TCP. Introdução ao Protocolo TCP. Introdução ao protocolo TCP: Exemplo

User Datagram Protocol

Protocolos e Arquiteturas de Redes. Thiago Leite

Relatório do Laboratório 3

Aula 2 Arquitetura de Redes. Prof. Dr. S. Motoyama

Serviços de Comunicações Capítulo 3

Transcrição:

2004-2015 Volnys Bernal 1 2004-2015 Volnys Bernal 2 Resumo das Chamadas UDP Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2015 Volnys Bernal 3 2004-2015 Volnys Bernal 4 Resumo de Chamadas UDP Resumo de Chamadas UDP connect() Pré define o parceiro de comunicação para todo Informa o parceiro de comunicação a cada chamada recv() 2004-2015 Volnys Bernal 5 2004-2015 Volnys Bernal 6 Chamada Objetivo Criar um novo socket (plug de comunicação) Chamada Retorna o descritor de arquivo (número inteiro). Sintaxe sd = socket (int domain, int type, int protocol) Observação: Quando um socket é criado, não possui nenhuma informação sobre o parsocket (endereços IPs e portas dos parceiros). Os endereços IP e portas são informados nas chamadas: Lado servidor: Lado cliente: connect() ou

2004-2015 Volnys Bernal 7 2004-2015 Volnys Bernal 8 Chamada Sintaxe geral int socket(int domain, int type, int protocol) Socket descriptor Pilha de protocolos: PF_LOCAL (file) PF_INET (IPv4) PF_INET6 (IPv6) PF_X25 (X25) Tipo da comunicação: SOCK_STREAM (TCP) SOCK_DGRAM (UDP) SOCK_RAW (IP) Id. do protocolo: UDP (17) TCP (6) Chamada Tipo de serviço SOCK_STREAM Para ser utilizado com o protocolo TCP Canal de comunicação full duplex Orientada a conexão Fluxo de bytes sem delimitação Comunicação confiável: sem perda de dados, sem duplicação, entrega na ordem Chamadas para transmissão e recepção de dados: read(), write() ou, recv() SOCK_DGRAM Para ser utilizado com o protocolo UDP Datagrama (mensagens) Chamadas para trasnmissão e recepção de dados:, recv() SOCK_RAW Permite acesso a protocolos de mais baixo nível Datagrama (mensagens) Chamadas para trasnmissão e recepção de dados:, recv() Chamada Para criar um socket TCP sd = socket(af_inet, SOCK_STREAM, 0); Para criar um socket UDP sd = socket(af_inet, SOCK_DGRAM, 0); Para criar um socket Raw sd = socket(af_inet, SOCK_RAW, protocol); 2004-2015 Volnys Bernal 9 Chamada Exemplo de criação de socket UDP int sd; // socket descriptor sd = socket(pf_inet, SOCK_DGRAM, 0); if (sd == -1) { perror( Erro na chamada socket ); exit(1); } 2004-2015 Volnys Bernal 10 2004-2015 Volnys Bernal 11 2004-2015 Volnys Bernal 12 Chamada Chamada Objetivo Permite associar um socket address (IP+porta) ao socket Deve ser utilizado no lado servidor Retorna 1 no caso de erro

2004-2015 Volnys Bernal 13 2004-2015 Volnys Bernal 14 Chamada Chamada Sintaxe #include <netdb.h> Endereço IP da interface local. Pode ser o endereço IP de: Uma interface específica Todas interfaces locais(inaddr_any) #include <netdb.h> struct sockaddr_in mylocal_addr int bind( int sd, struct sockaddr *myaddr, socklen_t addrlen) mylocal_addr.sin_family = AF_INET; mylocal_addr.sin_addr.s_addr = INADDR_ANY; mylocal_addr.sin_port = htons(myport); da chamada: sucesso ou erro Descritor do socket estrutura de endereço (sockaddr) status = bind (sd, (struct sockaddr *) &mylocal_addr, sizeof(struct sockaddr_in)); if (status == -1) perror( Erro na chamada bind ); 2004-2015 Volnys Bernal 15 2004-2015 Volnys Bernal 16 Chamada Chamada Recebimento de datagramas Permite obter a identificação do parceiro Pode ser utilizado pelo cliente ou servidor Socket Descriptor Ponteiro para buffer da mensagem Tamanho do buffer int recvfrom(int sd, void * buffer, int buffersize, int flags, struct sockaddr *from, int *sockaddrsize) Endereço da origem estrutura sockaddr Opções 2004-2015 Volnys Bernal 17 2004-2015 Volnys Bernal 18 Chamada Chamada Exemplo: char rxbuffer[80]; struct sockaddr_in fromaddr; // sockaddr do cliente int size; size = sizeof(struct sockaddr_in); status = recvfrom(sd, rxbuffer, sizeof(rxbuffer), 0, (struct sockaddr *) &fromaddr, &size); if (status <= 0) perror( Erro na chamada recvfrom ); Bloqueante Se não existirem mensagens na fila de recepção o processo fica aguardando sua chegada Exceção: quando o socket for criado como não bloqueante (ver fcntl(2)). Retorno Se a chamada tiver sucesso, o valor retornado é o tamanho do datagrama

2004-2015 Volnys Bernal 19 2004-2015 Volnys Bernal 20 Chamada Chamada Função para transmissão de dados (datagramas) Para um destino especificado Não deve ser precedido por connect() Pode ser utilizado pelo cliente ou pelo servidor Socket Descriptor Ponteiro para buffer da mensagem mensagem int sendto(int sd, void *txbuffer, int msgsize, int flags, struct sockaddr *to, int sockaddrsize) Opções Endereço do destino estrutura sockaddr 2004-2015 Volnys Bernal 21 2004-2015 Volnys Bernal 22 Chamada Exemplo: status = sendto (sd, buffer, strlen(buffer)+1, 0, (struct sockaddr *) &fromaddr, sizeof(struct sockaddr)) Chamada if (status <= 0) perror( Erro na chamada sendto ); 2004-2015 Volnys Bernal 23 2004-2015 Volnys Bernal 24 Chamada Chamada Objetivo Fechar o socket. Se ainda existirem dados para serem transmitidos pelo socket, aguarda por alguns segundos a finalização desta transmissão. Fecha o descritor do arquivo. Sintaxe int socket(int sd) Exemplo: int sd; // socketdescriptor status = close(sd); if (status == -1) perror( Erro na chamada close );

2004-2015 Volnys Bernal 25 2004-2015 Volnys Bernal 26 (1) Implemente um servidor para o serviço echo utilizando o protocolo UDP. O serviço UDP echo responde exatamente com a seqüência ASCII recebida. 2004-2015 Volnys Bernal 27 2004-2015 Volnys Bernal 28 Servidor não concorrente x concorrente Servidor Não Concorrente x Concorrente Servidor não concorrente Processa uma requisição por vez Servidor concorrente Possui capacidade para processar várias requisições simultaneamente Necessário quando o processamento da requisição for demorado e existir a possibilidade de chegar várias requisições simultâneas Implementação mais complexa, com duas alternativas: Uso de chamadas não bloqueantes Uso de programação multithreaded 2004-2015 Volnys Bernal 29 2004-2015 Volnys Bernal 30 convencional concorrente (convencional) (concorrente) connect() connect() processa processa recv() recv()

2004-2015 Volnys Bernal 31 2004-2015 Volnys Bernal 32 (3) Implementar um servidor UDP concorrente que realiza o seguinte processamento: #include <time.h> void processar(char* str_in, char* str_out) { time_t now_time; struct tm now_tm; char str_inicio[40]; char str_fim[40]; now_time = time(null); // Obtém instante (data/hora) corrente now_tm = *localtime(&now); // Converte para hora local // Formata data/hora: "ddd yyyy-mm-dd hh:mm:ss zzz" strftime(str_inicio,sizeof(str_inicio),"%a %d/%m/%y %H:%M:%S %Z",&now_tm); sleep(60); now_time = time(null); // Obtém instante (data/hora) corrente now_tm = *localtime(&now); // Converte para hora local strftime(str_fim,sizeof(str_inicio),"%a %d/%m/%y %H:%M:%S %Z", &now_tm); sprintf(str_out, %s: Inicio: %s, fim: %s, str_in, str_inicio, str_fim); } 2004-2015 Volnys Bernal 33 2004-2015 Volnys Bernal 34 Referências Bibliográficas Referências Bibliográficas COMMER, DOUGLAS; STEVENS, DAVID Internetworking with TCP/IP: volume 3: client-server programming and applications Prentice Hall 1993