Buscar

0940005_aula33

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

14/03/12 
1 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
2.	
  Tecnologias	
  de	
  programação	
  em	
  sistemas	
  distribuídos	
  	
  
	
  	
  	
  	
  2.1	
  Programação	
  baseada	
  em	
  troca	
  de	
  mensagens	
  
	
  	
  	
  	
  2.2	
  Chamada	
  de	
  procedimentos	
  remotos	
  (RPC)	
  
	
  	
  	
  	
  2.3	
  Invocação	
  de	
  métodos	
  remotos	
  (RMI)	
  	
  	
  	
  
	
  	
  	
  	
  2.4	
  Padronização	
  para	
  objetos	
  distribuídos	
  –	
  Corba	
  
Tema	
  da	
  aula	
  
14/03/12 
2 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Socket é uma tecnologia que possibilita a comunicação entre 
aplicações usando a rede de computadores; 
o  O JAVA oferece os seguintes os seguintes modos: 
o  TCP – modo orientado a conexão 
o  UDP – modo orientado a datagrama 
o  Os dois modos funcionam sobre o protocolo IP 
 
Introdução	
  Socket	
  
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
Socket	
  
14/03/12 
3 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  O processo de comunicação é orientado a conexão; 
o  Processo: 
o  O servidor escolhe uma determinada porta 
o  O servidor fica aguardando conexões nessa porta 
o  O cliente deve saber previamente qual é a máquina servidor e a porta 
o  O cliente solicita a conexão com a máquina/porta 
 
Sockets	
  usando	
  TCP/IP	
  
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Se nenhum problema acontecer então irá estabelecer a comunicação 
 
 
Sockets	
  usando	
  TCP/IP	
  
14/03/12 
4 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  O comportamento do servidor é ficar em um loop aguardando 
novas conexões gerando sockets para atender as solicitações dos 
clientes 
 
 
Sockets	
  usando	
  TCP/IP	
  
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
Sockets	
  usando	
  TCP/IP	
  
14/03/12 
5 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Para	
  implementar	
  a	
  estrutura	
  de	
  cliente/servidor	
  uHlizando	
  o	
  Java,	
  
este	
  existe	
  uma	
  biblioteca	
  para	
  trabalhar	
  com	
  essa	
  estruturas.	
  
Portanto	
  para	
  usá-­‐las	
  basta	
  importar	
  para	
  o	
  projeto;	
  
o  Prá?ca	
  01	
  
o  Criar	
  um	
  projeto	
  usando	
  o	
  NetBeans	
  
o  Criar	
  uma	
  Classe	
  e	
  nomeá-­‐la	
  de	
  Cliente	
  
o  Criar	
  uma	
  Classe	
  e	
  nomeá-­‐la	
  de	
  Servidor	
  
o  Importar	
  a	
  classe	
  java.net.*	
  para	
  a	
  classe	
  cliente	
  e	
  servidor;	
  
o  Importar	
  a	
  classe	
  java.io.*	
  para	
  a	
  classe	
  cliente	
  e	
  servidor;	
  
 
 
Sockets	
  usando	
  TCP/IP	
  
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
Sockets	
  usando	
  TCP/IP	
  
o  Implementação	
  do	
  cliente:	
  
o  Especificar	
  qual	
  máquina	
  o	
  cliente	
  conectará	
  em	
  qual	
  porta	
  
o  Criar	
  um	
  canal	
  para	
  enviar	
  os	
  dados	
  
o  Criar	
  um	
  canal	
  para	
  receber	
  os	
  dados	
  
o  Funcionalidades	
  do	
  programa	
  
Socket s = new Socket("localhost",2000);!
DataInputStream entrada = new !
 DataInputStream(s.getInputStream());!
!!
DataOutputStream saida = new !
 DataOutputStream(s.getOutputStream());!
14/03/12 
6 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
Sockets	
  usando	
  TCP/IP	
  
o  Implementação	
  do	
  cliente:	
  
o  Funcionalidades	
  do	
  programa	
  
o  Finalizar	
  conexão	
  com	
  o	
  servidor	
  fichar	
  o	
  canal	
  de	
  comunicação	
  
for (int i = 0; i < 10; i++){!
 saida.writeInt(i);!
 System.out.println("Enviei: "+i);!
 String en = entrada.readUTF();!
 System.out.println("Recebi: "+en);!
}!
entrada.close();!
saida.close();!
!
s.close();!
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Implementação	
  do	
  servidor:	
  
o  Especificar	
  qual	
  porta	
  o	
  servidor	
  ficará	
  escutando	
  
o  Se	
  aparecer	
  alguma	
  conexão	
  deverá	
  aceitar	
  
o  Criar	
  um	
  canal	
  para	
  receber	
  os	
  dados	
  
o  Criar	
  um	
  canal	
  para	
  enviar	
  os	
  dados	
  
Sockets	
  usando	
  TCP/IP	
  
ServerSocket s = new ServerSocket(2000);!
System.out.println("Esperando conexao...............");!
!
conexao = s.accept();!
System.out.println("Conexao aceita, esperando dados...");!
DataOutputStream saida = new !
 DataOutputStream(conexao.getOutputStream());!
DataInputStream entrada = new !
 DataInputStream(conexao.getInputStream());!
!!
14/03/12 
7 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Implementação	
  do	
  servidor	
  VERSÃO	
  01:	
  
o  Fica	
  recebendo	
  os	
  dados	
  enviados	
  pelo	
  cliente	
  
Sockets	
  usando	
  TCP/IP	
  
for (int i = 0; i < 10; i++) {!
 int linha = entrada.readInt(); !
 System.out.println("entrei");!
 saida.writeUTF("recebi seu dado: " + linha);!
}!
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Problemas	
  do	
  servidor:	
  
Sockets	
  usando	
  TCP/IP	
  
•  O servidor aceita somente uma conexão por vez;!
•  O servidor não gera um loop infinito;!
•  Não temos dados dos clientes no servidor para gerar !
 relatório!
14/03/12 
8 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Implementação	
  do	
  servidor	
  VERSÃO	
  02:	
  
o  Fica	
  recebendo	
  os	
  dados	
  enviados	
  pelo	
  cliente	
  
Sockets	
  usando	
  TCP/IP	
  
InetAddress endereco_remoto;!
int porta_remota;!
ServerSocket s = new ServerSocket(2000);!
System.out.println("Esperando conexao.......................");!
conexao = s.accept();!
System.out.println("Conexao aceita, esperando envio de dados.");!
endereco_remoto = conexao.getInetAddress();!
porta_remota = conexao.getPort();!
!
System.out.println("Nome da maquina remota: " + !
 endereco_remoto.getHostName());!
System.out.println("IP da maquina remota: " + !
 endereco_remoto.getHostAddress());!
System.out.println("Porta maquina remota: " + porta_remota);!
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Implementação	
  do	
  servidor	
  VERSÃO	
  02:	
  
o  Fica	
  recebendo	
  os	
  dados	
  enviados	
  pelo	
  cliente	
  
Sockets	
  usando	
  TCP/IP	
  
DataInputStream entrada = new DataInputStream(!
 conexao.getInputStream());!
DataOutputStream saida = new DataOutputStream(!
 conexao.getOutputStream());!
!
for (int i = 0; i < 10; i++) {!
 int linha = entrada.readInt();!
 System.out.println("entrei");!
 saida.writeUTF("recebi seu dado: " + linha);!
}!
14/03/12 
9 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Problemas	
  do	
  servidor:	
  
Sockets	
  usando	
  TCP/IP	
  
•  O servidor aceita somente uma conexão por vez;!
•  O servidor não gera um loop infinito;!
•  Temos dados dos clientes no servidor para gerar !
 relatório!
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
Sockets	
  usando	
  TCP/IP	
  
•  PráHca	
  02	
  -­‐	
  CLIENTE	
  
public static void main(String args[]) {!
 try {!
 !
 Socket conexao = new Socket("127.0.0.1", 2001);!
 !
 DataInputStream entrada = new DataInputStream(!
 conexao.getInputStream());!
 DataOutputStream saida = new DataOutputStream(!conexao.getOutputStream()); !
 String linha;!
 BufferedReader teclado = new BufferedReader(new !
! ! ! !InputStreamReader(System.in));!
 !while (true) {!
! ! System.out.print("> ");!
 linha = JO….;!
 saida.writeUTF(linha);!
 linha = entrada.readUTF();!
 !
14/03/12 
10 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
Sockets	
  usando	
  TCP/IP	
  
•  PráHca	
  02	
  -­‐	
  CLIENTE	
  
! ! if (linha.equalsIgnoreCase("")) {!
 System.out.println("Conecao encerrada!");!
 break;!
 }!
 System.out.println(linha);!
 }!
 }!
 catch (IOException e) {!
 System.out.println("IOException: " + e);!
 }!
 }!
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
Sockets	
  usando	
  TCP/IP	
  
•  PráHca	
  02	
  -­‐	
  SERVIDOR	
  
public static void main(String args[]) {!
 try {!
!
 ServerSocket s = new ServerSocket(2001);!
 while (true) {!
 System.out.print("Esperando alguem se conectar...");!
 Socket conexao = s.accept();!
 System.out.println(" Conectou!");!
 DataInputStream entrada = new DataInputStream!
 (conexao.getInputStream());!
! DataOutputStream saida = new DataOutputStream!
 (conexao.getOutputStream());!
 !
! ! String linha = entrada.readLine();!
 !
! ! while (linha != null && !(linha.trim().equals(""))) {!
 saida.writeUTF(linha);!
 linha = entrada.readUTF();!
 !
14/03/12 
11 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
Sockets	
  usando	
  TCP/IP	
  
•  PráHca	
  02	
  -­‐	
  SERVIDOR	
  
 ! ! }!
! ! saida.writeUTF(linha);!
 conexao.close();!
 }!
 }!
 catch (IOException e) {!
 System.out.println("IOException: " + e);!
 }!
 }!
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Problemas	
  do	
  servidor:	
  
Sockets	
  usando	
  TCP/IP	
  
•  O servidor aceita somente uma conexão por vez;!
•  O servidor gera um loop infinito;!
•  Temos dados dos clientes no servidor para gerar !
 relatório!
14/03/12 
12 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
•  APLICAÇÃO	
  CLIENTE	
  
Exemplos	
  Threads	
  Java	
  
import java.io.*;!
import java.net.*;!
!
public class Cliente extends Thread{!
!!
!private static boolean done = false;!
!private Socket conexao;!
!!
!public Cliente(Socket s){!
! !conexao = s;!
!}!
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
Exemplos	
  Threads	
  Java	
  
public static void main(String[] args) {!
!try{!
! !Socket conexao = new Socket(”localhost",2000);!
! !PrintStream saida = new PrintStream!
! ! ! !(conexao.getOutputStream());!
! ! !!
! !BufferedReader teclado = new BufferedReader(new !
! ! ! !InputStreamReader(System.in));!
! !System.out.print("Entre com o seu nome: "); !
! !String meuNome = teclado.readLine(); !
! !saida.println(meuNome); !
! !Thread t = new Cliente(conexao);!
! !t.start(); ! ! !!
! !String linha;!
! !!
14/03/12 
13 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
Exemplos	
  Threads	
  Java	
  
! !while (true){!
! ! !if (done){!
! ! ! break; ! ! ! ! !!
! ! !} ! ! !!
! ! !System.out.println("> "); ! ! ! 
! linha = teclado.readLine(); !
! ! !saida.println(linha); ! ! !
!!
! ! !!
! !}!
! !catch (IOException e){!
! ! !System.out.println("IOException: " + e);!
! !} ! !!
!}!
!
! !!
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
Exemplos	
  Threads	
  Java	
  
public void run(){!
 try{!
!BufferedReader entrada = new BufferedReader(new !
! !
!InputStreamReader(conexao.getInputStream()));!
!String linha;!
!while (true){!
! !linha = entrada.readLine();!
! !if (linha.trim().equals("")){!
! ! !System.out.println("Conexao encerrada!!!");!
! ! !break;!
! !}!
! !System.out.println();!
 ! System.out.println(linha);!
 ! System.out.print("...> ");!
!}!
 }!
 catch(IOException e){ ! !!
!System.out.println("IOException: " + e);!
 }!
 done = true;!
}!
! !!
14/03/12 
14 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
•  APLICAÇÃO	
  SERVIDOR	
  
Exemplos	
  Threads	
  Java	
  
import java.io.*;!
import java.net.*;!
import java.util.*;!
!
public class Servidor extends Thread {!
!
!private static Vector clientes;!
!private Socket conexao;!
!private String meuNome;!
!
!public Servidor(Socket s){!
! !conexao = s;!
!}!
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
Exemplos	
  Threads	
  Java	
  
public static void main(String[] args) {!
!clientes = new Vector();!
!try{!
! !ServerSocket s = new ServerSocket(2000);!
! !while (true){!
! ! !System.out.print("Esperando conectar...");!
! ! !Socket conexao = s.accept();!
! ! !System.out.println(" Conectou!");!
! ! !Thread t = new Servidor(conexao);!
! ! !t.start();!
! !}!
!}!
!catch(IOException e){!
! !System.out.println("IOException: " + e);!
!}!
}!
14/03/12 
15 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
Exemplos	
  Threads	
  Java	
  
public void run(){!
 try{!
!BufferedReader entrada = new BufferedReader(new !
 InputStreamReader(conexao.getInputStream()));!
!PrintStream saida = new PrintStream!
 (conexao.getOutputStream());!
!
!meuNome = entrada.readLine();!
!if (meuNome == null){!
! return;!
!}!
!clientes.add(saida);!
!String linha = entrada.readLine();!
!
!while ((linha != null) && (!linha.trim().equals(""))){!
! sendToAll(saida," disse: ",linha);!
! linha = entrada.readLine();!
!}!
! ! !!
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
Exemplos	
  Threads	
  Java	
  
!sendToAll(saida," saiu "," do Chat!");!
!clientes.remove(saida);!
!conexao.close();!
 }!
 catch(IOException e){!
!System.out.println("IOException: " + e);!
 }!
}!
! ! !!
14/03/12 
16 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
Exemplos	
  Threads	
  Java	
  
public void sendToAll(PrintStream saida, String acao, String 
linha) throws IOException {!
!Enumeration e = clientes.elements();!
!while (e.hasMoreElements()) {!
! PrintStream chat = (PrintStream) e.nextElement(); 
! if (chat != saida) {!
! !chat.println(meuNome + acao + linha);!
! }!
! if(acao == " saiu "){!
! if (chat == saida)!
! ! chat.println("");!
! }!
 }!
} ! ! !!
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Problemas	
  do	
  servidor:	
  
Sockets	
  usando	
  TCP/IP	
  
•  O servidor aceita várias conexões;!
•  O servidor gera um loop infinito;!
•  Temos dados dos clientes no servidor para gerar !
 relatório!
14/03/12 
17 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Para	
  o	
  ulHmo	
  exemplo	
  feito	
  em	
  Java	
  usando	
  Threads	
  colocar	
  uma	
  
interface	
  gráfica	
  para	
  deixar	
  o	
  exemplo	
  mais	
  fácil	
  de	
  uHlizar.	
  
o  O	
  trabalho	
  será	
  apresentado	
  para	
  o	
  professor	
  da	
  disciplina	
  
o  Grupos	
  de	
  3	
  alunos	
  
o  Valor	
  do	
  projeto	
  3	
  pontos	
  
o  Data	
  de	
  entrega:	
  ___________________	
  
Projeto	
  01:	
  projeto	
  de	
  TCP/IP	
  
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
Sockets	
  usando	
  UDP	
  
14/03/12 
18 
INSTITUTO FEDERALTRIÂNGULO MINEIRO
Campus Uberlândia
o  São muito mais rápidos que o TCP; 
o  São muito mais simples; 
o  Menos confiáveis; 
o  Não temos estabelecimentos de conexão; 
o  Comunicação ocorre apenas com o envio de mensagens; 
 
 
Sockets	
  usando	
  UDP/IP	
  
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Uma mensagem é um datagrama; 
o  Composto por um sender; 
o  Um destinatário 
o  Um receptor; 
o  Uma mensagem; 
 
o  Caso o destinatário não esteja aguardando uma mensagem a 
mesma é perdida 
 
 
Sockets	
  usando	
  UDP/IP	
  
14/03/12 
19 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Cliente: 
o  criar um datagrama e informar qual o endereço do servidor 
 
o  Habilitar que o usuário entre com dados 
 
 
Sockets	
  usando	
  UDP/IP	
  
DatagramSocket s = new DatagramSocket();!
InetAddress sender = InetAddress.getByName("localhost");!
String envio;!
 !
BufferedReader teclado = new BufferedReader(new !
 InputStreamReader(System.in));!
System.out.print("> ");!
envio = teclado.readLine();!
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Cliente: 
o  Enquanto o usuário quiser enviar dados aceitar: 
o  Criar o buffer 
 
 
o  Montar o pacote de envio 
 
 
o  Enviar 
 
 
 
Sockets	
  usando	
  UDP/IP	
  
while(!envio.equalsIgnoreCase("")){!
 byte[] buffer = envio.getBytes();!
DatagramPacket pergunta = new DatagramPacket(buffer, !
 buffer.length, sender, 4545);!
s.send(pergunta);!
14/03/12 
20 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Cliente: 
o  Enquanto o usuário quiser enviar dados aceitar: 
o  Montar o pacote para receber 
o  Receber 
o  Mostra para o usuário a resposta 
 
 
 
Sockets	
  usando	
  UDP/IP	
  
DatagramPacket resposta = new !
 DatagramPacket(new byte[512], 512);!
s.receive(resposta);!
for(int i = 0; i < resposta.getLength(); i++){!
 System.out.print((char) resposta.getData()[i]);!
}!
System.out.println();!
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Cliente: 
o  Enquanto o usuário quiser enviar dados aceitar: 
o  Montar o pacote para receber 
o  Receber 
o  Mostra para o usuário a resposta 
 
 
 
Sockets	
  usando	
  UDP/IP	
  
DatagramPacket resposta = new !
 DatagramPacket(new byte[512], 512);!
s.receive(resposta);!
for(int i = 0; i < resposta.getLength(); i++){!
 System.out.print((char) resposta.getData()[i]);!
}!
System.out.println();!
14/03/12 
21 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Cliente: 
o  Enquanto o usuário quiser enviar dados aceitar: 
o  Esperar o usuário entrar com dados novamente 
o  Fechar do datagrama 
 
 
 
 
Sockets	
  usando	
  UDP/IP	
  
System.out.print("> ");!
envio = teclado.readLine();!
s.close();!
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Servidor: 
o  Criar o datagrama em uma porta 
o  Monta o pacote para receber os dados do cliente 
o  Enquanto estiver recebendo os dados 
 
 
 
 
Sockets	
  usando	
  UDP/IP	
  
DatagramSocket s = new DatagramSocket(4545);!
System.out.println("Servidor esperando conexão.......");!
String envio;!
DatagramPacket recebe = new !
 DatagramPacket(new byte[512], 512);!
while(true){!
 envio = "";!
 s.receive(recebe);!
14/03/12 
22 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Servidor: 
o  Recebe os dados e monta a resposta 
o  Monta o buffer para o cliente e atribui ao datagrama e envia 
 
 
 
 
Sockets	
  usando	
  UDP/IP	
  
System.out.print("Mensagem recebida: ");!
for(int i = 0; i < recebe.getLength(); i++){!
 System.out.print((char) recebe.getData()[i]);!
 envio = envio + (char) recebe.getData()[i];!
}!
System.out.println();!
byte[] buffer = envio.getBytes();!
DatagramPacket resp = new DatagramPacket(buffer, !
 b u f f e r . l e n g t h , r e c e b e . g e t A d d r e s s ( ) , 
recebe.getPort());s.send(resp); !
}!
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
o  Para	
  o	
  ulHmo	
  exemplo	
  feito	
  em	
  Java	
  usando	
  UDP	
  colocar	
  uma	
  interface	
  
gráfica	
  para	
  deixar	
  o	
  exemplo	
  mais	
  fácil	
  de	
  uHlizar.	
  
o  Além	
  disso	
  criar	
  uma	
  função	
  no	
  servidor	
  que	
  envia	
  para	
  todos	
  os	
  clientes	
  
conectados	
  as	
  mensagens	
  enviadas	
  simulando	
  um	
  chat.	
  
o  O	
  trabalho	
  será	
  apresentado	
  para	
  o	
  professor	
  da	
  disciplina	
  
o  Grupos	
  de	
  3	
  alunos	
  
o  Valor	
  do	
  projeto	
  4	
  pontos	
  
o  Data	
  de	
  entrega:	
  ___________________	
  
Projeto	
  02:	
  projeto	
  de	
  UDP/IP	
  
14/03/12 
23 
INSTITUTO FEDERAL 
TRIÂNGULO MINEIRO
Campus Uberlândia
Fim	
  aula.....	
  
ricardoboaventura@iftm.edu.br

Outros materiais