Socket em Java.

Slides:



Advertisements
Apresentações semelhantes
JAVA Orientação a Objetos
Advertisements

I/O Carlos Bazilio Depto de Ciência e Tecnologia
Reflexão Marco Antonio Arquiteto de Software Novembro/2007.
Jogos de tabuleiro Multiplayer
Sockets Marco Antonio – marcoreis.net Arquiteto de Software Dezembro/2007.
Entrada e Saída Marco Antonio Arquiteto de Software Dezembro/2007.
JDBC aplicado no projeto PAIPUC Integrantes: Eduardo M. Nsimba - 4º Ano Gian Paolo Peduto - 2º Ano Heloísa H. S. Santos - 2º Ano Orientador: Prof. Dr.
Comunicação entre processos distribuídos
Tratamento de Exceções
Ir p/ primeira página Cliente/Servidor Modelo usado para construir aplicações Servidor em número de porta conhecido – Aceita requisições e executa serviços.
Streams Java.
Invocação de Métodos Remotos RMI
Programação Concorrente
Wagner Santos C. de Jesus
Wagner Santos C. de Jesus
Membros estáticos.
Excepções e Streams em Java
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
CRIANDO OBJETOS EM JAVA
Introdução à Programação Distribuída em Java
Concorrência em Java Threads em Java.
Threads: Introdução e Implementação
Bruno Rafael de Oliveira Rodrigues. Tratadores de Excessões A exceção é uma indicação de que um erro ou problema aconteceu durante a execução de uma aplicação.
Threads, Gerenciamento de Threads Pool de Threads, Grupo de Threads Variáveis Locais à Threads.
Infra-Estrutura de Comunicação (IF678)
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 – CIn/UFPE Davi Duarte Denyson José Eduardo Souza Ivan França Rafael Lima.
Streams –input e output
Linguagem técnica de programação I Java
Chamada Remota de Procedimentos
Programação com sockets
OPERADORESOPERADORES SCJP – Otimize-TI. Operadores Java Resultado: Maioria das operações é um booleano ou numérico. Não podem ser sobrecarregados (Existem.
Java Avançado Luiz Carlos d´Oleron SJCP Java Sockets.
Desenvolvimento de Aplicações CORBA
1 Mobilidade de Código com μcode Projeto Giga Alexandre Lages
Arquivos if669 - Introdução à Programação Monitoria de IP Igor Ebrahim (ies) Nicole Sultanum (nbs2) Paulo Borba (phmb)
Orientação a Objetos e Java Graduação em Ciência da Computação
T. D. S. I. PARA WEB Prof. Emmanuel Nolêto. Java RMI.
Java e Serviço de Transporte Vitor Brandi Junior.
BC-0502 Metodologia e Algoritmos Computacionais Santo André, Abril de Arquivos em Java.
Programação Orientada a Objetos Curso de Engenharia da Computação Parte 03 – Conceitos Básicos III Prof. Fabricio Mota Oliveira
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Linguagem II Exceções.
Listas Simplesmente Encadeadas
Wagner Santos C. de Jesus
Infra-Estrutura de Comunicação (IF678) Aula Prática CIn/UFPE Rafael Lucena Roberta Mota Rubens Lopes Rodolfo Santos João Pedro Cordeiro.
1 JAVA I/O (Entrada e Saída em JAVA) Prof. Alexandre Monteiro Recife.
Profa. Patrícia A. Jaques
Programação Orientada a Objetos - Java
Implementando comunicação em JAVA via Sockets Alcides Calsavara - Leonardo R. Nunes -
Programação distribuída e concorrente
Tratamento de Exceções
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Introdução às Java Threads
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Aula Prática 4 Monitoria IP/CC (~if669).
Implementação Orientada a Objetos – Aula 05 Construtores e sobrecarga de métodos Prof. Danielle Martin Universidade de Mogi das Cruzes
Polimorfismo.
Capítulo 6 Exceções.
Coleções, Genéricos, Threads Marco Antonio. Collection Principais métodos da interface Collection.
Estrutura de Controle em JAVA
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP Hugo Simões Original por: Flávio.
Aula Prática 5 05/05/2010. //Estrutura do método public int subtrair (int a, int b){ //Calcule a operação desejada. int resultado = a – b; //Retorne o.
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Redes de Computadores I Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Programação Distribuída em Java Aula Na aula passada vimos: I/O Streams Filtros Readers and Writers.
© Copyright 2008 Algoritmos e Estruturas de Dados 1 IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Adriana Libório Fernandes Lins Arthur Cavalcanti.
Transcrição da apresentação:

Socket em Java

Servidor Limitação: ele recebe apenas 1 cliente e depois import java.io.*; import java.net.*; public class Servidor { public static void main( String args[] ) throws Exception //Escutar a porta 6789 ServerSocket server = new ServerSocket( 6789 ); //Espera uma conexão Socket cliente = server.accept(); // -------------------------- // RECEBE UM DADO DO CLIENTE InputStream input = cliente.getInputStream(); int valor = input.read(); // Mostrar o valor na tela System.out.println( "valor: " + valor ); //Fechar a conexão input.close(); cliente.close(); server.close(); } Limitação: ele recebe apenas 1 cliente e depois para a conexão;

Cliente public class Cliente { import java.io.*; import java.net.*; public class Cliente { public static void main( String args[] ) throws Exception //Abrir a conexao com o servidor Socket socket = new Socket( "127.0.0.1" , 6789 ); // -------------------------- // ENVIAR UM DADO OutputStream output = socket.getOutputStream(); output.write( 127 ); //Fechar a conexão com o servidor output.close(); socket.close(); }

servidor pode receber mais clientes 1° melhoramento servidor pode receber mais clientes

Servidor Limitação: ele recebe apenas 1 cliente por vez; public class Servidor{ Private static boolean executar = true; public static void main( String args[] ) throws Exception{ //Escutar a porta 6789 ServerSocket server = new ServerSocket( 6789 ); while( executar ){ //Espera uma conexão Socket cliente = server.accept(); // -------------------------- // RECEBE UM DADO DO CLIENTE InputStream input = cliente.getInputStream(); int valor = input.read(); //Mostrar o valor na tela System.out.println( "valor: " + valor ); //Fechar a conexão input.close(); cliente.close(); } server.close(); Limitação: ele recebe apenas 1 cliente por vez;

servidor pode atender clientes simultaneamente 2° melhoramento servidor pode atender clientes simultaneamente

Servidor import java.net.*; import java.util.concurrent.*; public class Servidor{ Private static boolean executar = true; public static void main( String args[] ) throws Exception{ //Escutar a porta 6789 ServerSocket server = new ServerSocket( 6789 ); ExecutorService pool = Executors.newCachedThreadPool(); while( executar ){ //Espera uma conexão Socket cliente = server.accept(); //Atender o cliente em um Thread pool.submit( new AtenderClienteRunnable( cliente ) ); } server.close();

Servidor ( continuação... ) import java.io.InputStream; import java.net.Socket; public class AtenderClienteRunnable implements Runnable { private Socket cliente; public AtenderClienteRunnable(Socket cliente) { this.cliente = cliente; } @Override public void run() { Try { // -------------------------- // RECEBE UM DADO DO CLIENTE InputStream input = cliente.getInputStream(); int valor = input.read(); // Mostrar o valor na tela System.out.println( "valor: " + valor ); //Fechar a conexao com o cliente input.close(); cliente.close(); catch(Exception err) { err.printStackTrace(); }

3° melhoramento Facilidades do Java

Facilidades Utilizar o OutputStream e o InputStream é a maneira mais baixo nível de comunicação; Enviar e receber bytes; O java permite enviar e receber um objeto, de forma fácil e rápida; Basta criar uma instancia do ObjectOuputStream e ObjectInputStream;

Servidor @Override public void run() { Try { // -------------------------- // RECEBE UM DADO DO CLIENTE InputStream input = cliente.getInputStream(); ObjectInputStream ois = new ObjectInputStream( input ); Protocolo protocolo = (Protocolo) ois.readObject(); // Mostrar o valor na tela System.out.println( protocolo.toString() ); System.out.println( "------------------" ); //Fechar a conexao com o cliente input.close(); cliente.close(); } catch(Exception err) { err.printStackTrace(); }

Cliente public class ClienteObjeto { public static void main( String args[] ) throws Exception //Abrir a conexao com o servidor Socket socket = new Socket( "127.0.0.1" , 6789 ); // -------------------------- // ENVIAR UM DADO OutputStream output = socket.getOutputStream(); ObjectOutputStream oos = new ObjectOutputStream( output ); Protocolo protocolo = new Protocolo(); protocolo.setId( 1 ); protocolo.setMetodo( "somar" ); protocolo.setParam1( 10 ); protocolo.setParam2( 20 ); oos.writeObject( protocolo ); //Fechar a conexao com o servidor output.close(); socket.close(); }

… onde eu quero chegar com isso: o cliente apenas envia e o servidor apenas recebe. Deste modo, o exercício de vocês é fazer com o que o cliente espere e mostre na tela a resposta do servidor.

Exercício objetivo: Validar um CPF ou CNPJ no servidor O cliente envia um CPF ou CNPJ para o servidor O servidor recebe o dado, processa e retorna uma resposta true: caso o CPF ou CNPJ seja válido False: caso o CPF ou CNPJ seja inválido O cliente deve mostrar a resposta na tela O Servidor deve: Receber vários clientes (use while logo após abrir a porta); de forma simultânea (use Thread); Se tiver código igual, nenhum dos grupos irá receber a nota;

Exercício Adicionar ou modificar um objeto usuário no servidor O cliente envia o objeto usuário e qual ação deve fazer O servidor processa e retorna: true: caso tenha feito com sucesso False: caso acontecer alguma falha O cliente deve esperar e imprimir na tela a resposta do servidor

Avisos Em trio! Devem enviar por e-mail (avld@cin.ufpe.br) o trabalho no dia 13/04; Vale 3 pontos; Não receberam pontos caso haja 2 ou mais trabalhos iguais;