Prof. Adriano Fiorese Comunicação Inter-Processos Conceitos Iniciais 1 Características para Comunicação Inter-Processos Prof. Adriano Fiorese . Passagem de Mensagem pode ser suportada por duas operações de comunicação (send e receive) . A comunicação se dá pelo envio da mensagem (seqüência de bytes) do emissor para o receptor . Essa troca de mensagem pode envolver a sincronização dos processos envolvidos 2 Comunicação Síncrona e Assíncrona Prof. Adriano Fiorese . Síncrona: Ambos, emissor e receptor sincronizam-se a cada mensagem. Assim tanto o send como o receive são operações bloqueantes. . Assíncrona: Após o send o processo pode continuar executando. A operação receive pode ser bloqueante ou não. . Destinos das mensagens: Mensagens são enviadas para endereços Internet e portas. Uma porta tem exatamente um receptor. Servidores geralmente publicam seus números de porta aos clientes. 3 Prof. Adriano Fiorese Sockets Source: Coulouris et al. 4th Edition 4 Sockets . Abstração que comunicação. Prof. Adriano Fiorese . disponibiliza um ponto final para A comunicação inter-processos se dá através da transmissão de mensagem entre um socket em um processo e outro socket em outro processo. . Para o processo receptor o socket deve estar ligado ao endereço internet local e a uma porta local, no computador onde ele executa. . Cada socket está associado com um protocolo particular (TCP e UDP) . Processos podem usar o mesmo socket para envio e recepção de mensagens. 5 Comunicação Inter-Processos Prof. Adriano Fiorese RMI RPC TCP UDP (Abstração de passagem de mensagem) 6 Comunicação UDP - características . Tamanho da Mensagem: Prof. Adriano Fiorese O receptor deve especificar um array de bytes de tamanho particular onde deverá ser colocada a mensagem recebida. A maioria das implementações limita o tamanho a 8kb. Qualquer mensagem maior que o tamanho do array deverá ser truncada pela aplicação, apesar de o protocolo IP disponibilizar pacotes com tamanho de até 216 bytes. 7 Comunicação UDP - características Prof. Adriano Fiorese . Bloqueamento: A operação send não é bloqueante. Na chegada, se não houver socket ligada à porta destino a mensagem será descartada. O receive bloqueia até que o datagrama seja recebido a menos que um timeout seja configurado. Pode-se usar threads para executar o processamento das mensagens, ao mesmo tempo que outra thread aguarda o recebimento de outras mensagens. 8 Comunicação UDP – características Prof. Adriano Fiorese . Timeouts: Nem sempre o bloqueio indefinido no recebimento de mensagens é adequado. Assim, timeouts podem ser atribuídos às sockets. Um timeout deve ser longo o bastante para ser maior que o tempo que uma mensagem demoraria para chegar. 9 Comunicação UDP – características Prof. Adriano Fiorese . Recepção de qualquer cliente: O método receive não especifica uma origem para as mensagens. Assim, o método receive retorna o endereço Internet (IP) e a porta local do emissor permitindo a verificação de onde a mensagem veio. 10 Comunicação com Datagramas UDP Prof. Adriano Fiorese Sockets usados para comunicação UDP em *nix SOs Source: Coulouris et al. 4th Edition 11 Comunicação com Datagramas UDP . Mensagem enviada sem reconhecimento nem réplicas. Prof. Adriano Fiorese . Um servidor deve ligar sua socket receptora a uma porta servidora que deve ser conhecida ou ficar conhecida pelos clientes. . Um cliente pode ligar sua socket a uma porta local livre. . Na recepção a operação receive retorna o endereço internet e a porta do emissor. 12 Modelo de Falhas na comunicação UDP . Sofre de falhas de omissão de comunicação Prof. Adriano Fiorese . Falhas de ordenação Para algumas aplicações é aceitável porque a comunicação via UDP não sofre de overheads associados com as garantias de entrega de mensagens. As principais fontes de overhead são: 1. Necessidade de armazenar informações de estado na fonte e destino. 2. A transmissão de mensagens extra 3. A latência no emissor. 13 Próximos Passos Prof. Adriano Fiorese . Ver exemplos de código para a arquitetura cliente/servidor utilizando UDP 14 Código em Java - multiplataforma Servidor Prof. Adriano Fiorese Cliente Source: Coulouris et al. 4th Edition 15 Próximos Passos Prof. Adriano Fiorese . Trabalho prático 16