















Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
programação
Tipologia: Notas de estudo
1 / 23
Esta página não é visível na pré-visualização
Não perca as partes importantes!
















Programação em Redes com Java
(TCP e UDP) e também
java.net.
sockets:
datagrama, que funciona sobre o protocolo UDP. Pacote java.net •^ Os dois modos funcionam sobre o protocolo IP.• Cada um desses modos tem sua aplicabilidade, com vantagens edesvantagens.
Programação em Redes com Java
Socket^? “Os sockets são mecanismos de comunicação entre processos (IPC -InterProcess Communication, desenvolvidos por um grupo de pesquisa daUniversidade da Califórnia), que podem estar numa mesma máquina ou emmáquinas diferentes via rede. São diferentes dos
pipes, principalmente
Pacote java.net porque fazem distinção entre cliente e servidor, e a comunicação podeocorrer nos dois sentidos.”
Programação em Redes com Java Pacote java.netModo Orientado a conexão TCP/IP O processo de comunicação no modo orientado à conexão ocorre da seguinteforma:• O servidor escolhe uma determinada porta e fica aguardandoconexões nesta porta.• O cliente deve saber previamente qual a máquina servidora e a portaque o servidor está aguardando conexões.• O cliente solicita uma conexão em um
host/porta.
Socket^ (soquete de dados)
e
ServerSocket^ (soquete do servidor)
Programação em Redes com Java Pacote java.netSocket^ Alguns métodos^ public Socket(InetAddress address, int
port) public Socket(String
host, int^ port) public void close()public InetAddress getInetAddress()public InputStream getInputStream()public OutputStream getOutputStream()
Programação em Redes com Java
socket^ associado a uma porta
accept
Socket
InputStreams^ e Pacote java.net^ OutputStreams
Programação em Redes com Java
accept^ tem êxito, uma nova linha de execução Pacote java.net deve ser ativada para cuidar da conexão entre o servidor e o cliente emquestão. O servidor volta então para esperar novas conexões.
Programação em Redes com Java Pacote java.net^ ServerSocket^ t1 t
Socket
ServerSocket(port)accept()new ThreadSocket()
Socket(end, port) OutputStreamInputStream Troca dados InputStreamOutputStream
Cria Socket(socket do Cliente) ThreadSocket
Retorna socket para comunicação
Programação em Redes com Java Exemplo^ public class Servidor {^ public static void main(String[] args) {try{Socket cSocket;ServerSocket sSocket = new ServerSocket(8080);while(true){System.out.println("Aceitando solicitacoes");cSocket = sSocket.accept();ThreadAtendeCliente tc = new ThreadAtendeCliente(cSocket);tc.start();} }catch (IOException e){}} }
Cria socketparacomunicação Aceita conexãoatravés do socket^ Cria thread paraAtender ao cliente
Programação em Redes com Java class ThreadAtendeCliente extends Thread { private Socket cSocket;public ThreadAtendeCliente(Socket cSocket) {this.cSocket = cSocket;} public void run(){System.out.println(“Atendendo a um ciente");try {InputStream in = cSocket.getInputStream();PrintWriter os = new PrintWriter(cSocket.getOutputStream());String msg = "Servidor "+ cSocket.getInetAddress() + "usando a porta " + cSocket.getPort() + " para responder a um cliente" ;msg=msg+"\n"+"A data e hora do sistema: " + new Date().toString();os.write(msg);os.close();cSocket.close();} catch (IOException e) {System.exit(1); } } } Exemplo
Programação em Redes com Java Enviando: HELO work-q7vxr6c89b/201.4.18.222Resposta: 220 itariri.ufba.br Kerio MailServer 6.0.8 ESMTP readyEnviando: MAIL FROM: [email protected]: 250 itariri.ufba.brEnviando: RCPT TO: [email protected]: 250 2.1.0 Sender okEnviando: DATAResposta: 550 5.7.0 Your server IP address is in the
SORBS DNSBL^ database, bye Enviando: SUBJECT: Teste em Java para envio de e-mailResposta: nullEnviando: Corpo da mensagem .Resposta: nullMensagem enviada com sucesso!
Tabela de Spam
Exemplo2 - Resultado
Programação em Redes com Java Pacote java.netPacote java.netModo Orientado a datagrama UDP/IPSockets^ UDP/IP são muito mais rápidos que
sockets^ TCP/IP. São mais simples, porém menos confiáveis.Em UDP não temos o estabelecimento de conexão, sendo que a comunicaçãoocorre apenas com o envio de mensagens.Um mensagem é um
datagrama, que é composto de um remetente (
sender),
um destinatário ou receptor (
receiver), e a mensagem (
content).
Em UDP, caso o destinatário não esteja aguardando uma mensagem ela éperdida.Em Java a comunicação não confiável (modo orientado a
datagrama)
acontece através de
sockets^ utilizando duas classes:
DatagramSocket
e
DatagramPacket
Programação em Redes com Java DatagramPacket
(Datagramas a serem enviados pela rede
Alguns métodos^ public DatagramPacket(byte ibuf[], int ilength)public DatagramPacket(byte ibuf[], int ilength,
InetAddress iaddr, int iport)public InetAddress getAddress()public byte[] getData()public int getLength()public int getPort() Pacote java.net
Programação em Redes com Java public class ServidorUDP Exemplo public static void main(String[] args) {try{ DatagramSocket servidor = new DatagramSocket(4545);DatagramPacket question = new DatagramPacket(new byte[512], 512);int i=0;while(i<10){System.out.println("Aguardando envio de informacoes");servidor.receive(question);String toSend="Resposta Servidor";byte [] buffer = toSend.getBytes();DatagramPacket resposta = new DatagramPacket(buffer, buffer.length,
question.getAddress(), question.getPort());servidor.send(resposta);i++; } servidor.close();}catch (SocketException e){
e.printStackTrace(); }catch (UnknownHostException o){
o.printStackTrace(); }catch (IOException a){
a.printStackTrace(); } } }