Carregar apresentação
A apresentação está carregando. Por favor, espere
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;
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.