0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito...
Transcript of 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito...
![Page 1: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/1.jpg)
SOCKETS UDP, TCP E MULTICAST
Prof. Cesar Augusto Tacla
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPR
Prof. Cesar Augusto Taclahttp://www.dainf.ct.utfpr.edu.br/~tacla
![Page 2: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/2.jpg)
Sumário
1. Introduçãoa. Contexto: comunicação inter-processosb. Conceito de socket
2. Sockets UDPa. Protocolo UDPb. Programação com sockets UDP
22Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
3. Sockets TCPa. Protocolo TCPb. Programação com sockets TCP
4. Sockets MULTICASTa. Programação com sockets
![Page 3: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/3.jpg)
CONTEXTO: Comunicação Inter-processos
◊ Sockets� Datagrama� Stream (fluxo)
◊ RMI� Remote method invokation
� Invocação remota de métodos
local C
objeto
33Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
Invocação
remota
remote
local
local
localA B
C
D
E
F
![Page 4: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/4.jpg)
Sumário
Conceito de Socket
1 b
44Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
![Page 5: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/5.jpg)
SOCKETS
Os sockets UDP e TCP são a interface provida pelos respectivos protocolos na interface da camada de transporte.
55Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
HARDWARE
PROTOCOLOSSIST. OPER.
MIDDLEWARE
APLICAÇÃO DISTRIBUÍDA
HARDWARE
PROTOCOLOSSIST. OPER.
PLATAFORMA
RMIRPCCORBA
sockets
![Page 6: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/6.jpg)
PILHA DE PROTOCOLOS
REDE
TRANSPORTE
APLICAÇÃO
Internet Protocol (IP)
User Datagram Protocol (UDP)Transport Control Protocol (TCP)
HTTP, POP3, SMTP,IMAP, Telnet, SSH, FTP
66Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
FÍSICO
ENLACE
REDE Internet Protocol (IP)Ethernet, 802.11WiFi
802.11g (wireless)
Controle de acesso ao meio:RS232, Bluetooth, USB, ADSL
![Page 7: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/7.jpg)
SOCKETS: CONCEITO
◊ Utilizado para comunicação interprocessos distribuídos
◊ Aplicações cliente-servidor
Host: 138.36.95.240 Host: 137.37.58.250
Porta
77Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
ProcessoCLIENTE
ProcessoSERVIDOR
Portaqualquer
Portaconhecida
Socket = IP + porta
![Page 8: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/8.jpg)
SOCKETS: CONCEITO
ProcessoSERVIDOR
1
Host: 137.37.58.250
ProcessoSERVIDOR
2
ProcessoSERVIDOR
3
70076789 6790 7009
88Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
PROTOCOLOS DE TRANSPORTE (TCP xor UDP).
Msg para 137.37.58.250:6789
Processocliente
7575
![Page 9: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/9.jpg)
SOCKETS
◊ Execute no shell dos: netstat -na
Active Connections
Proto Local Address Foreign Address StateTCP 0.0.0.0:135 0.0.0.0:0 LISTENINGTCP 0.0.0.0:445 0.0.0.0:0 LISTENINGTCP 0.0.0.0:2804 0.0.0.0:0 LISTENINGTCP 127.0.0.1:1033 0.0.0.0:0 LISTENINGTCP 127.0.0.1:1044 127.0.0.1:1045 ESTABLISHED
99Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
TCP 127.0.0.1:1044 127.0.0.1:1045 ESTABLISHEDTCP 127.0.0.1:1045 127.0.0.1:1044 ESTABLISHEDTCP 127.0.0.1:1047 127.0.0.1:1048 ESTABLISHEDTCP 127.0.0.1:1048 127.0.0.1:1047 ESTABLISHEDTCP 200.17.96.134:139 0.0.0.0:0 LISTENINGTCP 200.17.96.134:139 200.17.96.175:1209 ESTABLISHEDTCP 200.17.96.134:2169 200.17.96.235:139 ESTABLISHEDUDP 0.0.0.0:445 *:*UDP 0.0.0.0:500 *:*UDP 0.0.0.0:1039 *:*
![Page 10: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/10.jpg)
Sumário
SOCKETS UDP
2
1010Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
![Page 11: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/11.jpg)
Sumário
Protocolo UDP
2 a
1111Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
![Page 12: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/12.jpg)
SOCKETS UDP: CARACTERÍSTICAS
◊ Sockets UDP: canal não-confiável
� Não garante entrega dos datagramas� Pode entregar datagramas duplicados� Não garante ordem de entrega dos datagramas� Não tem estado de conexão (escuta, estabelecida)
1212Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
![Page 13: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/13.jpg)
Datagrama UDP
Porta origem Porta destino
Comprimento Checksum
Cabeçalho IP
Cabeçalho UDP: PORTAS
ENDEREÇO IP
1313Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
DatagramaMensagem auto-contida
Tamanho máximo: limitado pelo protocolo IP v4216 bytes (cabeçalhos + conteúdo) = 65.536 bytes
Comprimento Checksum
![Page 14: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/14.jpg)
SOCKETS UDP: CARACTERÍSTICAS
◊ Canal não-confiável
Host: 138.36.95.240 Host: 137.37.58.250
1414Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
ProcessoCLIENTE
ProcessoSERVIDORDDD
roteador
D
D datagrama
![Page 15: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/15.jpg)
Sumário
Programação com sockets UDP
2 b
1515Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
![Page 16: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/16.jpg)
SOCKETS UDP: Comandos básicos
◊ Criar socket� DatagramSocket s = new DatagramSocket(6789);
◊ Receber um datagrama� s.receive(req);
◊ Enviar um datagrama� s.send(resp);
1616Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
◊ Fechar um socket� s.close();
◊ Montar um datagrama para receber mensagem� new DatagramPacket(buffer, buffer.length);
◊ Montar um datagrama para ser enviado� new DatagramPacket(msg, msg.length, inet, porta);
� Buffer e msg são byte[]
![Page 17: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/17.jpg)
SOCKETS UDP: SERVIDOR
import java.net.*;
import java.io.*;
// cria um socket UDP
DatagramSocket s = new DatagramSocket(6789);
byte[] buffer = new byte[1000];
System.out.println("*** Servidor aguardando request");
// cria datagrama para receber request do cliente
DatagramPacket r = new DatagramPacket(buffer, buffer.length);
s.receive(r);
1717Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
System.out.println("*** Request recebido de: " + r.getAddress());
// envia resposta
DatagramPacket resp = new DatagramPacket(r.getData(), r.getLength(),
r.getAddress(), r.getPort());
s.send(resp);
s.close();
JAVARepositorio\JSockets\UDPScktCoulouris\src
Servidor de “um-tiro”. Ao receber uma conexão de um cliente, retorna a resposta e encerra a execução.
![Page 18: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/18.jpg)
SOCKETS UDP: CLIENTE
// cria um socket UDP
s = new DatagramSocket();
System.out.println("* Socket criado na porta: " + s.getLocalPort());
byte[] m = args[0].getBytes(); // transforma arg em bytes
InetAddress serv = InetAddress.getByName(args[1]);
int porta = 6789;
DatagramPacket req = new DatagramPacket(m, args[0].length(), serv, porta);
import java.net.*;
import java.io.*;
1818Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
// envia datagrama contendo a mensagem m
s.send(req);
byte[] buffer = new byte[1000];
DatagramPacket resp = new DatagramPacket(buffer, buffer.length);
s.setSoTimeout(10000); // timeout em ms
// recebe resposta do servidor – fica em wait ateh chegada
s.receive(resp);
System.out.println("* Resposta do servidor:" + new String(resp.getData()));
// fecha socket
s.close();
JAVARepositorio\JSockets\UDPScktCoulouris\src
![Page 19: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/19.jpg)
SOCKETS UDP: Esquema cliente-servidor
◊ Cliente1. Criar socket: um socket pode
ser utilizado para enviar datagramas para qualquer socket servidor
2. Montar datagrama com <servidor:porta> de destino <servidor:porta> de origem
◊ Servidor1. Aguarda num receive� ...� ...� ...� ...� ...� ...
1919Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
<servidor:porta> de origem3. Enviar datagrama4. Bloqueia num receive� ...� ...� ...5. Recebe a resposta
6. Trata a resposta7. Volta ao item 2
� ...� ...� ...2. Recebe a mensagem3. Processa a mensagem4. Envia resposta ao cliente5. Volta ao item 1
![Page 20: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/20.jpg)
EXERCÍCIOS
1. Baseando-se no código dos slides anteriores, fazer um servidor que atenda aos clientes invertendo a string recebida ou fazendo uma modificação qualquer na mensagem recebida (versão 1)
2. Alterar o servidor (ex. 1) para tratar solicitações dos clientes de forma concorrente. Cada vez que uma
Fonte em http://www.dainf.ct.utfpr.edu.br/~tacla/JAVARepositorio/JSockets/UDPScktCoulouris/src/
Solução em JAVARepositorio\JSockets\UDPScktCoulourisInverteStr
[JAVA]
2020Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
clientes de forma concorrente. Cada vez que uma mensagem é recebida, o servidor cria uma thread para atendê-la e volta a esperar por nova solicitação de cliente
3. Desenhar um diagrama de sequência para o exercício 2 para o cenário de duas conexões simultâneas de clientes com o servidor (baixar o código do repositório).
Solução: JAVARepositorio\JSockets\UDPScktServidorMultiThread
![Page 21: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/21.jpg)
SOCKETS UDP: PRÁTICA 1
◊ Prática 1: servidor atende um cliente1. Baixar os arquivos do repositório
1. Numa janela DOS, rodar o servidor:� ir para o diretório onde se encontra o Servidor.jar� java –jar Servidor.jar
[Teleinfo]
2121Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
2. Verificar a execução do servidor (em outra janela) através de� netstat –a –b –p UDP
3. Rodar o cliente passando com argumentos uma mensagem e o endereço do servidor� Ex. java –jar Cliente.jar 127.0.0.1 6789 “MSG TST”
Código fonte e .jar disponível emJAVARepositorio/JSockets/UDPScktCoulouris/dist/Servidor.jarJAVARepositorio/JSockets/UDPScktCoulouris/dist/Cliente.jar
![Page 22: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/22.jpg)
SOCKETS UDP: PRÁTICA 2
◊ Prática 2: servidor atende vários clientes (multithread)1. Baixar os arquivos do repositório (quadrado em destaque)
2. Numa console DOS, rodar o servidor:� ir para o diretório onde salvou o .jar� java –jar Servidor.jar
[Teleinfo]
2222Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
3. Rodar o cliente passando com argumentos uma mensagem e o endereço do servidor. Duas threads clientes serão executadas.� Ex. java –jar Cliente.jar 127.0.0.1 6789 “mensagem teste”
Código fonte e .jar disponível emJAVARepositorio\JSockets\UDPScktCoulourisClienteMultiThread
![Page 23: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/23.jpg)
EXERCÍCIO UDP
◊ Fazer um sistema cliente-servidor para correção e estatística de questionários.
◊ O servidor deve ser capaz de receber várias conexões de clientes simultaneamente.
◊ O cliente envia ao servidor, vários datagramas contendo cada um uma resposta do tipo V ou F ao questionário, no seguinte formato:� <número da questão>;<número alternativas>;<respostas>� Exemplo:
� 1;5;VVFFV� 2;4;VVVV
[JAVA]
2323Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
◊ O servidor lê a mensagem e calcula o número de acertos e erros devolvendo uma resposta simples:� <número da questão>;<número acertos>;<número erros>
◊ O servidor também faz uma estatística de acertos/erros por questão com base em todos as questões recebidas até um certo momento.Estas informações devem ser representadas num objeto compartilhado por todas as threads de atendimento aos clientes.� Estatística� Questão 1: acertos=5 erros=3� Questão 2: acertos=4 erros=4
![Page 24: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/24.jpg)
SOCKETS UDP: RESUMO
◊ 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
2424Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
� 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)
![Page 25: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/25.jpg)
Sumário
SOCKETS TCP
3
2525Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
![Page 26: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/26.jpg)
SUMÁRIO
Protocolo TCP
3 a
2626Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
![Page 27: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/27.jpg)
SOCKETS TCP: CANAL CONFIÁVEL
◊ Protocolo TCP implementa um canal confiável� Do ponto de vista do desenvolvedor: fluxo contínuo (stream)
� São fragmentados pelo TCP em segmentos
� Garante a entrega dos segmentos
� Não há duplicação� Garante ordem de entrega dos segmentos
� Possui conexão e, portanto, controla o estado de conexão (escuta,
2727Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
� Possui conexão e, portanto, controla o estado de conexão (escuta, estabelecida, fechada)
� Ponto-a-ponto: um sender:um receiver – sockets são conectados� Controle de congestionamento: TCP controla o sender quando a
rede congestiona.� Controle de fluxo: Controla o sender para não sobrecarregar o
receiver
sender receiver
![Page 28: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/28.jpg)
SOCKETS TCP: ESTADOS CONEXÃO
Origem DestinoSYN
SYN + ACK
ACK
SYN_SENT
SYN_RCVD
LISTEN
ESTABLISHED
ESTABLISHED3 msgshandshake
2828Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
FINFIN_WAIT 1CLOSE_WAIT
ACKFIN_WAIT 2
FIN + ACKTIME_WAIT 2
LAST_ACK
ACK
CLOSED
4 msgshandshakepara finalizar
![Page 29: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/29.jpg)
SOCKETS TCP: STREAM
◊ Stream� Um stream é uma seqüência de bytes transmitida ou recebida
continuamente por um processo
� TCP preocupa-se em segmentar o stream, se necessário, e entregar os segmentos à aplicação na ordem correta.
� Programador pode forçar envio: flush
2929Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
� Programador pode forçar envio: flush
� Para o programador de sockets TCP:
� basta gravar os dados num buffer de saída para que sejam enviados e
� ler os dados de chegada num buffer de entrada.
![Page 30: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/30.jpg)
SOCKETS TCP: CANAL CONFIÁVEL
◊ Canal confiável
Host: 138.36.95.240 Host: 137.37.58.250
Stream de saída Stream de entrada
3030Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
ProcessoCLIENTE
ProcessoSERVIDOR123
roteador
4
1 Segmento TCP
3
![Page 31: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/31.jpg)
SUMÁRIO
Programação com sockets TCP
3 b
3131Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
![Page 32: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/32.jpg)
SOCKETS TCP: PRIMITIVAS DE PROGRAMAÇÃO
◊ Servidor cria socket de escuta numa porta (ex. 6789)� ServerSocket ss = new ServerSocket(6789);
◊ Servidor aceita uma conexão e cria novo socket para atendê-la� Socket a = ss.accept();
3232Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
◊ Cliente cria socket de conexão� Socket s = new Socket(“localhost”, 6789)
◊ Fecha o socket� s.close()
![Page 33: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/33.jpg)
SOCKETS TCP: PRIMITIVAS DE PROGRAMAÇÃO
◊ Cliente escreve no stream de saída do socket� Criar um stream de dados – getOutputStream retorna uma classe abstrata
� DataOutputStream sai = new
DataOutputStream(sc.getOutputStream());
� sai.writeUTF(“mensagem para o servidor”);
◊ Cliente lê o stream de entrada do socket
3333Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
◊ Cliente lê o stream de entrada do socket� DataInputStream ent = new
DataInputStream(sc.getInputStream())
� String recebido = ent.readUTF();
◊ Leitura e escrita são similares no servidor, mas são feitas usualmente no socket retornado pelo método accept
![Page 34: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/34.jpg)
SOCKETS TCP: EXEMPLO SERVER
public class TCPServidor {
public static void main(String args[]) {
try {
int porta = 6789; // porta do serviço
if (args.length > 0) porta = Integer.parseInt(args[0]);
ServerSocket escuta = new ServerSocket(porta);
System.out.println("*** Servidor ***");
System.out.println("*** Porta de escuta (listen): " + porta);
while (true) {
// accept: bloqueia servidor até que chegue um
3434Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
// accept: bloqueia servidor até que chegue um
// pedido de conexão de um cliente
Socket cliente = escuta.accept();
System.out.println("*** conexao aceita de (remoto): " +
cliente.getRemoteSocketAddress());
// quando chega, cria nova thread para atender o
// cliente passando o socket retornado por accept
Conexao c = new Conexao(cliente);
}
} catch (IOException e) {
System.out.println("Erro na escuta: " + e.getMessage());
}
}
}
![Page 35: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/35.jpg)
SOCKETS TCP: EXEMPLO CLIENTE
public class TCPCliente {
public static void main(String args[]) {
Socket s = null;
try {
// conecta o socket aa porta remota
s = new Socket(args[0], Integer.parseInt(args[1]));
DataInputStream ent = new DataInputStream(s.getInputStream());
DataOutputStream sai = new DataOutputStream(s.getOutputStream());
sai.writeUTF(args[2]);
// le stream de entrada
String recebido = ent.readUTF();
System.out.println("*** Recebido do servidor: " + recebido);
} catch (UnknownHostException e) {
System.out.println("!!! Servidor desconhecido: " + e.getMessage());
3535Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
System.out.println("!!! Servidor desconhecido: " + e.getMessage());
} catch (EOFException e) {
System.out.println("!!! Nao ha mais dados de entrada: " + e.getMessage());
} catch (IOException e) {
System.out.println("!!! E/S: " + e.getMessage());
} finally {
if (s!=null)
try {
s.close();
} catch (IOException e){
System.out.println("!!! Encerramento do socket falhou: " +
e.getMessage());
}
}
}
}
![Page 36: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/36.jpg)
EXEMPLO 2: Transferência de objetos
public class TCPServidor {
public static void main(String args[]) throws
ClassNotFoundException, IOException {
int porta = 6789;
ServerSocket escuta = new ServerSocket(porta);
System.out.println("*** Servidor ***");
System.out.println("*** Porta de escuta (listen): " + porta);
while (true) {
Socket cliente = escuta.accept();
System.out.println("*** conexao aceita de (remoto): " +
cliente.getRemoteSocketAddress());
ObjectInputStream ois =
3636Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
ObjectInputStream ois =
new ObjectInputStream(cliente.getInputStream());
while (true) {
try {
Documento doc = (Documento) ois.readObject();
System.out.println(doc.toString());
} catch (IOException e) {
break;
}
}
}
}
}
Servidor desempacota osobjetos recebidos
Código fonte e .jar disponível emhttp://www.dainf.ct.utfpr.edu.br/~tacla/JAVARepositorio/JSockets/TCPTrocaObjetos/
![Page 37: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/37.jpg)
EXEMPLOS: Transferência de Objetos
public class TCPCliente {
public static void main(String args[]) {
Socket s = null;
try {
s = new Socket("localhost", 6789); // conecta o socket aa porta remota
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
Documento d1 = new Documento("Divina Comedia", "Dante");
oos.writeObject(d1);
Documento d2 = new Documento("Dom Casmurro", "M. de Assis");
oos.writeObject(d2);
} catch (UnknownHostException e) {
System.out.println("!!! Servidor desconhecido: " + e.getMessage());
} catch (EOFException e) {
3737Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
} catch (EOFException e) {
System.out.println("!!! Nao ha mais dados de entrada: " +
e.getMessage());
} catch (IOException e) {
System.out.println("!!! E/S: " + e.getMessage());
} finally {
if (s!=null)
try {
s.close();
} catch (IOException e){
System.out.println("!!! Encerramento do socket falhou: " +
e.getMessage());
}
}
}
}
![Page 38: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/38.jpg)
SOCKETS TCP: PRÁTICA 1 R-R
◊ Prática 1: request-reply1. Baixar os arquivos do repositório (ver quadro)
2. Numa console DOS, fazer:� ir para o diretório onde se encontra os .jar� Executar: java -jar Servidor ou //porta default 6789
� Executar: java -jar Servidor <porta>
3838
� Executar: java -jar Servidor <porta>
3. Em outra janela, rodar o cliente passando com argumentos uma mensagem e o endereço do servidor.� Ex. java –jar Cliente <SERVIDOR> <PORTA> <MENSAGEM>� Ex. java –jar Cliente localhost 6789 “MENSAGEM TESTE TCP”
Código fonte e .jar disponível emhttp://www.dainf.ct.utfpr.edu.br/~tacla/JAVARepositorio/JSockets/TCPScktRequestReply/
![Page 39: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/39.jpg)
SOCKETS TCP: PRÁTICA 2 FTP
◊ Prática 2: Servidor de arquivo1. Baixar os arquivos do repositório (ver quadro) – baixe o arquivo .txt da
pasta dist
2. Numa console DOS, fazer:� ir para o diretório onde se encontram os .jar� Executar: java –jar Servidor.jar
3939Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
3. Rodar o cliente passando como argumentos o servidor, porta e seu nome� Ex. java –jar Cliente.jar <SERVIDOR> <PORTA> <NOME>� Ex. java –jar Cliente “localhost” 6789 CESAR
4. Executar vários clientes em consoles diferentes para verificar que o servidor atende a todos por ser multithread. Cada cliente recebe um stream de dados que está armazenado no arquivo teste.txt no servidor.
Código fonte e .jar disponível emhttp://www.dainf.ct.utfpr.edu.br/~tacla/JAVARepositorio/JSockets/TCPScktServidorArquivo/
![Page 40: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/40.jpg)
SOCKETS TCP: EXERCÍCIO
◊ Modifique o código do servidor de arquivos para que o cliente possa Solicitar o arquivo que deseja baixar passando o nome o mesmo.� Servidor pode retornar o arquivo (se existir) ou uma mensagem de
arquivo não encontrado.
[JAVA]
4040Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
Solução: Código fonte e .jar disponível em
---- não disponível ----
Código fonte e .jar disponível emhttp://www.dainf.ct.utfpr.edu.br/~tacla/JAVARepositorio/JSockets/TCPScktServidorArquivo/
![Page 41: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/41.jpg)
EXERCÍCIO
◊ Fazer um sistema cliente-servidor para correção e estatística de questionários.
◊ O servidor deve ser capaz de receber várias conexões de clientes simultaneamente.
◊ O cliente envia ao servidor, um arquivo texto contendo as respostas tipo V ou F ao questionário, no seguinte formato:� <número da questão>;<número alternativas>;<respostas>� Exemplo:
� 1;5;VVFFV� 2;4;VVVV
[JAVA]
4141Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
◊ O servidor lê o arquivo e calcula o número de acertos e erros devolvendo uma resposta simples:� <número acertos>;<número erros>
◊ O servidor também faz uma estatística de acertos/erros por questão com base em todos os questionários recebidos até um certo momento.Estas informações devem ser representadas num objeto compartilhado por todas as threads de atendimento aos clientes.� Questão 1: acertos=5 erros=3� Questão 2: acertos=4 erros=4
![Page 42: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/42.jpg)
SOCKETS TCP: ESQUEMA MULTI-THREAD
◊ Cliente1. Conexão: criar
um socket para conectar-se ao socket do servidor
2. Conexão aceita
◊ Servidor: escuta porta conhecida1. Socket em LISTENING
2. Início do handshake
3. Accept: fim dohandshake, crianovo socket
4242Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
3. Troca mensagens com a thread criada para atendê-lo
4. close
◊ Servidor: thread1. Troca mensagens
com cliente
2. close
![Page 43: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/43.jpg)
SOCKETS UDP X TCP
◊ UDP� VANTAGENS
� Overhead pequeno: não há handshake de conexão/finalização
� Não há necessidade de salvar estados de transmissão nas pontas (fonte e destino)
◊ TCP
4343Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
(fonte e destino)� Diminui tempo de latência
� DESVANTAGENS
� Perda de mensagens� Não há ordenação� Limite de tamanho de mensagens
![Page 44: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/44.jpg)
Socket TCP170.10.25.4:8000
SOCKETS UDP X TCP
Socket TCP170.10.25.1:7900
Socket UDP170.10.25.1:7900
4444Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
170.10.25.4:8000
Socket UDP170.10.25.4:8000
Socket UDP170.10.25.5:9000
PROMÍSCUO
CONECTADO
![Page 45: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/45.jpg)
Sumário
SOCKETS MULTICAST
4
4545Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
![Page 46: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/46.jpg)
SUMÁRIO
Protocolo Multicast
4 a
4646Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
![Page 47: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/47.jpg)
SOCKETS: MULTICAST
◊ Um processo envia uma mensagem para um grupo de processos
◊ Permite enviar um único pacote IP para um conjunto de processos denominado grupo de multicast
4747Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
Grupo de multicast
![Page 48: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/48.jpg)
MULTICAST
◊ Variações� Multicast confiável e não-confiável� Ordenado e não-ordenado� Ordenado: FIFO, CAUSAL e TOTAL
◊ Aplicações� Difusões de áudio e vídeo
4848Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
� Difusões de áudio e vídeo� Replicação de serviços� Localização de serviços em redes espontâneas� Replicação de operações/dados� Difusão de eventos
![Page 49: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/49.jpg)
MULTICAST: Funcionamento
◊ Um único pacote IP para um grupo
◊ O emissor não conhece:� a identidade dos destinatários� o tamanho do grupo
◊ Endereço de Grupo (IPv4)
4949Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
� Categoria D� [224, 239] [0, 255] [0, 255] [0, 255]� Exemplo: 230.230.100.100
� Reservados: 224.0.0.1 até 224.0.0.255� Temporários: todos os demais, existem enquanto houver
participantes
![Page 50: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/50.jpg)
MULTICAST: FUNCIONAMENTO
◊ Recebimento de pacotes
Processo1
Host: 137.37.58.250
Processo2
Processo3
join
5050Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
2055
IP
Msg para grupo 230.230.100.100:2009
join 230.230.100.100:2009 join 230.230.100.100:2009
UDP
![Page 51: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/51.jpg)
SUMÁRIO
Programação sockets Multicast
4 b
5151Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
![Page 52: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/52.jpg)
SOCKETS MULTICAST: PRIMITIVAS PROGRAMAÇÃO
◊ s = new MulticastSocket(porta)
◊ s.joinGroup(ipGrupo)
◊ s.leaveGroup(ipGrupo)
5252Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
![Page 53: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/53.jpg)
SOCKETS MULTICAST: EXEMPLO ENVIO MSGclass Envia {
public static void main(String args[]) {
int porta=6868;
InetAddress ipGrupo=null;
MulticastSocket s=null;
String msg="mensagem default";
// junta-se a um grupo de Multicast
try {
ipGrupo = InetAddress.getByName("224.225.226.227");
s = new MulticastSocket(porta);
s.joinGroup(ipGrupo);
} catch (SocketException e) { }
5353Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
// envia mensagem
DatagramPacket dtgrm = new DatagramPacket(msg.getBytes(),
msg.length(), ipGrupo, porta);
try {
s.send(dtgrm);
} catch (IOException e) { }
// sai do grupo e fecha o socket
try {
s.leaveGroup(ipGrupo);
if (s!=null) s.close();
} catch (IOException e) { }
}
}
![Page 54: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/54.jpg)
SOCKETS MULTICAST: EXEMPLO RECEPÇÃO MSGclass Observador {
public static void main(String args[]) {
int porta=6868;
InetAddress ipGrupo=null;
MulticastSocket s=null;
String msg="mensagem default";
// junta-se a um grupo de Multicast
try {
ipGrupo = InetAddress.getByName("224.225.226.227");
s = new MulticastSocket(porta);
s.joinGroup(ipGrupo);
} catch (SocketException e) { }
5454Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
// le continuamente as mensagens
byte[] buf = new byte[1512];
while (true) {
DatagramPacket recebido = new DatagramPacket(buf, buf.length);
try {
s.setSoTimeout(120000);
s.receive(recebido);
} catch (SocketTimeoutException e) {
break;
} catch (IOException e) { }
String str = new String(recebido.getData());
System.out.println("(" + recebido.getAddress().getHostAddress() +
":" + recebido.getPort() + ") << " + str.trim());
}
}
![Page 55: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/55.jpg)
SOCKETS: MULTICAST
◊ Prática 1: chat1. Baixar os arquivos em destaque no quadro
2. Numa console DOS, fazer:� ir para o diretório onde se encontra o .jar� Executar: java –jar JMulticastConfererenciav2.jar <IP grupo>
<porta> <usr>
5555Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
<porta> <usr>� Ex: java –jar JMulticastConferenciav2.jar 231.232.233.234
6789 DOG
3. O programa permite fazer uma espécie de chat� Basta teclar uma mensagem seguida de enter, para que todos
os membros do grupo a recebam� Para encerrar, não teclar nada durante 1 minuto
Solução: Código fonte e .jar disponível emhttp://www.dainf.ct.utfpr.edu.br/~tacla/JAVARepositorio/JSockets/JMulticastConferenciav2/
![Page 56: 0050-Sockets.ppt [Modo de Compatibilidade]bosco/ensino/ine5645/2014-1/0050-Sockets.pdf · Conceito de socket 2. Sockets UDP a. Protocolo UDP b. Programação com sockets UDP 2 Sistemas](https://reader034.fdocumentos.tips/reader034/viewer/2022052517/5c8d66fa09d3f255638b5d71/html5/thumbnails/56.jpg)
SOCKETS MULTICAST: EXERCÍCIO
◊ Inclua no código anterior uma janela de para envio/recepção de mensagens
◊ Incluir uma opção de sair do chat
[JAVA]
5656Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla
Solução: Código fonte e .jar disponível em--- não disponível ---