Você está na página 1de 11

CURSO: Tecnologia em Análise e Desenvolvimento de Sistemas (TADS)

DISCIPLINA: Sistemas Distribuídos

Sistemas Distribuídos

Comunicação entre processos


- Práticas com Java/Sockets (usando UDP)

PROFESSOR: Claudio Roberto de Lima Martins


claudiomartins2000@gmail.com
2

Agenda
Comunicação entre processos (práticas com Java – Sockets )

• Aplicação Socket em UDP


• Exemplo

• OBS:
1) Baixe os códigos exemplos do Github https://github.com/cmartins-ifpa/sockets

2) Importe ou copie os códigos para um IDE Java: Eclipse, Netbean, VSCode, IntelliJ
3

Sockets
• Os sockets são recursos da camada de transporte para prover a
comunicação nos protocolos UDP e TCP.
• Utilizado para comunicação entre processos distribuídos, em
aplicações cliente-servidor
4

Sockets UDP: CARACTERÍSTICAS


• Não confiável: O UDP não tem nenhuma mecanismo para detectar erros nem
retransmitir dados perdidos ou corrompidos. Falhas ocorrem mais em canal
não-confiável:
▫ Não garante entrega dos datagramas
▫ Pode entregar datagramas duplicados
▫ Não garante ordem de entrega dos datagramas

• Independente de conexão: o UDP não negocia uma conexão antes de


transmitir dados. A informação é enviada com a presunção de que o cliente
esteja escutando.

• Orientada a mensagem: O UDP permite que as aplicações enviem mensagens


junto com os datagramas UDP, a unidade de transmissão do UDP.
▫ A aplicação precisa empacotar toda a informação dentro de datagramas
individuais.
5

Datagrama UDP
6

Programação Sockets UDP


• Neste exemplo temos um processo “servidor” e outro “cliente”.
• Servidor:
▫ Roda na máquina local e escuta na porta “6789”
▫ Seu buffer (datagrama) aloca 1000 bytes
▫ Fica em um laço infinito esperando a conexão dos clientes
 Recebe a mensagem do cliente
 Prepara uma resposta ao cliente
 Envia a resposta ao cliente
7
ServerUDP.java
8
ClienteUDP
9

Analisando as portas do seu computador


• Para verificar as portas sockets e ips usados
• Execute no shell dos/Windows: netstat –na
10

SOCKETS UDP: Comandos básicos em Java (Resumo)


11

Resumo (Sockets com UDP em Java)


• Send não é bloqueante
• Receive é bloqueante
▫ A menos que se especifique um timeout
▫ Servidor pode ter várias threads:
 uma na escuta de novas solicitações
 outras, servindo os clientes

• Um socket UDP não é conectado


▫ Pode receber dados de quaisquer outros sockets
▫ Exceto se for “conectado” a outro socket pelo método:
public void connect(InetAddress address, int port)

Você também pode gostar