A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Socket em Java.

Apresentações semelhantes


Apresentação em tema: "Socket em Java."— Transcrição da apresentação:

1 Socket em Java

2 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;

3 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( " " , 6789 ); // // ENVIAR UM DADO OutputStream output = socket.getOutputStream(); output.write( 127 ); //Fechar a conexão com o servidor output.close(); socket.close(); }

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

5 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;

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

7 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();

8 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(); }

9 3° melhoramento Facilidades do Java

10 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;

11 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(); }

12 Cliente public class ClienteObjeto {
public static void main( String args[] ) throws Exception //Abrir a conexao com o servidor Socket socket = new Socket( " " , 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(); }

13 … 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.

14 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;

15 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

16 Avisos Em trio! Devem enviar por o trabalho no dia 13/04; Vale 3 pontos; Não receberam pontos caso haja 2 ou mais trabalhos iguais;


Carregar ppt "Socket em Java."

Apresentações semelhantes


Anúncios Google