Programa de Computador que funciona em Rede

Documentos relacionados
Java : Comunicação Cliente-Servidor.

Aula 30 - Sockets em Java

UNIVERSIDADE ESTADUAL DO OESTE DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS COLEGIADO DE INFORMÁTICA

Threads e Sockets em Java. Threads em Java. Programas e Processos

Conexão Socket na MIDP

INF1013 MODELAGEM DE SOFTWARE

Capítulo II Modelos de Programação Distribuída

Multithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações

insfcanceof new public switch transient while byte continue extends for int null

Sistemas Distribuídos

Java Básico. Matrícula de Alunos. Marco Antonio, Arquiteto de Software TJDF Novembro/2005

Analisar os sistemas operacionais apresentados na figura e responder as questões abaixo: Identificar

Camada de Transporte. Bruno Silvério Costa

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas

Mecanismos de Comunicação. Sockets em java (

Exercícios de Revisão Java Básico

Sockets. Introdução. Introdução. Programando para redes em Java. mecanismo de alto nível para acessar recursos na Internet.

Cliente-servidor com Sockets TCP

Programação com sockets (em Java)

Programação Paralela e Distribuída. Prof. Cidcley T. de Souza

Olho por olho, e o mundo acabará cego. Mohandas Gandhi

Programação de sockets com TCP

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos

Sockets com Java Parte I

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Bacharelado em Ciência e Tecnologia BC Processamento da Informação Teoria Arquivos Prof. Edson Pinheiro Pimentel edson.pimentel@ufabc.edu.

THREADS EM JAVA. George Gomes Cabral

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

socket Objetivo: aprender a construir aplicações cliente/servidor que se comunicam usando sockets

Redes de Computadores /1

Invocação de Métodos Remotos RMI (Remote Method Invocation)

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Cartão de fidelização de clientes das distribuidoras de combustível.

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

PROTÓTIPO TIPO DE SISTEMA DE MONITORAMENTO REMOTO UTILIZANDO TCP/IP SOBRE ETHERNET (802.3)

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Programação de Sockets

Java Threads. Introdução

Algoritmos e Programação II. Sobrecarga

Caso 1 NetScanner Main

Vetores. Professor Dr Francisco Isidro Massettto

Análise de Programação

Um pouco do Java. Prof. Eduardo

Programação de Computadores - I. Profª Beatriz Profº Israel

Comunicação via Sockets. Prof. Orlando Loques - IC/UFF. versão

Módulo 5 - JDBC java.sql - Conexão com Banco de Dados

Threads e Concorrência em Java (Material de Apoio)

Programação II Java Streams. Christopher Burrows

Programação em Rede Baseada em Java. Luiz Affonso Guedes Tópicos em Redes de Computadores Programação Distribuída

Desenvolvimento OO com Java Orientação a objetos básica

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Universidade Federal da Paraíba

Persistência de Classes em Tabelas de Banco de Dados

Relatório 1º Laboratório: O Java e os Sockets. Licenciatura: ETI Turma : ETC1 Grupo : rd3_t3_02 Data: 22/02/2010

Encapsulamento de Dados

Programação: Sockets em Java

Comunicação entre processos

Filas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

UFG - Instituto de Informática

Fundamentos de Programaçã. ção Concorrente

Programação de Redes de Computadores em Java

PROCESSOS. Prof. Maicon A. Sartin

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

Sockets em Java. Leonardo R. Nunes - leonardo@sumersoft.com. 1. Introdução. 2. Sockets TCP/IP

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos TUDO É UM OBJECTO TUDO É UM OBJECTO ÍNDICE.

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

J550 Integração com Bancos de Dados

Aula 3 Desvio Condicional

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

Orientação a Objetos

Sistemas Distribuídos Java Sockets

Projeto de sistemas em Java. Algoritmos e Programação I. Classe SimulacaoFuncionario. Classe SimulacaoFuncionario. Classe SimulacaoFuncionario

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

FTP FILE F TRANSFER PROTOCOL. Tópicos

Programação Visual TIC - 3PA. Lista de Exercícios 02

TUTORIAL JAVA AS - HTTP CLIENT COMPOSITION ENVIROMENT 7.1

Análise e Projeto Orientados por Objetos

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais

O comando switch. c Professores de ALPRO I 04/2012. Faculdade de Informática PUCRS. ALPRO I (FACIN) O comando switch 04/ / 31

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

Implementando uma Classe e Criando Objetos a partir dela

Programação Orientada a Objetos com Java. Prof. Júlio Machado julio.machado@pucrs.br

Rafael Santos. Instituto Nacional de Pesquisas Espaciais rafael.santos. Rafael Santos - rafael.

Estrutura Condicional em Java

Implementação de Classe e Auto-Relacionamento em Java

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3)

Roteiro. Introdução a Arquivos. Streams Serialização Arquivos de Acesso Randômico Exercícios. Armazenamento. Dados em vetores, listas e variáveis


CAPA PARA OS CABOS DA CABEÇA

1. Estude e implemente a classe Exemplo1 apresentada abaixo:

Sistemas Paralelos e Distribuídos /2004 Curso: Matemática /Informática Sistemas Distribuídos /2004 Curso: Ensino da Informática

Pilhas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Driver Mysql para Banco de Dados. Conexão com um Banco de Dados

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Transcrição:

Programa de Computador que funciona em Rede professor Robinson Vida Noronha 1

Paradigma Um programa rodando em rede é como uma loja. 2

Uma loja é composta por Vendedores Vendedores 3

Um loja deve servir a clientes Cliente 4

Para cada cliente que entrar na loja, um vendedor deverá atende-lo(a). 5

Cliente e Vendedor trocam informações o tempo todo. Ola,... 6

Como representar o Cliente? O Cliente é representado pela classe java.net.socket java.net.socket 7

Como representar a conversa entre o Cliente e o Vendedor? java.io.objectoutputstream: escreve na stream de saída. java.io.objectinputstream: le da stream de entrada. O que pode ser escrito? Dados primitivos e objetos Java. 8

Exemplo de Uso do Socket - Cliente private Socket con ; private ObjectOutputStream output; private ObjectInputStream input; private String endereco = 127.0.0.1 try con = new Socket(endereco,porta ); output = new ObjectOutputStream(con.getOutputStream()); InputStream s = con.getinputstream(); input = new ObjectInputStream(s); catch(java.io.ioexception er1) System.out.println(er1.getMessage()); 9

Como o Cliente ouve mensagens? try String mens = (String)input.readObject(); catch (java.lang.classnotfoundexception e) System.out.println("Class not found. \n"+ e.getmessage()); catch (java.io.ioexception e) System.out.println("Erro de IO. \n"+ e.getmessage()); 10

Como o Cliente ouve instâncias de Classe? try MinhaClasse mens = (MinhaClasse)input.readObject(); catch (java.lang.classnotfoundexception e) System.out.println("Class not found. \n"+ e.getmessage()); catch (java.io.ioexception e) System.out.println("Erro de IO. \n"+ e.getmessage()); 11

Como o Cliente fala mensagens? public void senddata(string m) try output.writeobject(m); output.flush(); // limpa o buffer. catch (IOException e) System.out.println( "Nao foi possivel enviar os dados.\n" + e.getmessage()); 12

Como é a dinamica do Cliente? O Cliente deverás ser filho de Thread ou implementar a interface Runnable Implementar o método ( void run( ) ) e todo o processo ocorre dentro desse método. 13

Implementação do Cliente public class ConversaComServidor implements Runnable private Socket con ; private ObjectOutputStream output; private ObjectInputStream input; private int p; // porta a ser conectado. private boolean ligado = true; private Protocolo protocolo; public ConversaComServidor(String endereco, int porta, Protocolo prot) p = porta; protocolo = prot; try con = new Socket(InetAddress.getByName(endereco),porta );... output = new ObjectOutputStream(con.getOutputStream()); InputStream s = con.getinputstream(); input = new ObjectInputStream(s); catch(java.io.ioexception er1) System.out.println (er1.getmessage()); 14

Implementação do Cliente: ouvidor public void run() String texto="", mens=""; while(ligado) try!mens = (String)input.readObject(); // li algo do servidor. if (mens.length() > 1) protocolo.analisemensagem(mens); if (protocolo.hasinstruction() ) senddata(protocolo.getmessage()); mens="";texto=""; catch (java.io.optionaldataexception e) System.out.println("Erro no desconectar.\n" +e.getmessage());... catch (java.lang.classnotfoundexception e) System.out.println("Class not found. \n" + e.getmessage()); catch (java.io.ioexception e) System.out.println("Erro de IO. \n"+ e.getmessage()); /* fim do while */ 15

Implementação do Cliente: envio de dados... public void senddata(string m) try output.writeobject(m); output.flush(); // limpa o buffer. catch (IOException e) System.out.println( "Nao foi possivel enviar os dados.\n" + e.getmessage()); public void setprotocoplo(protocolo p) protocolo = p; public void setstart(boolean v) ligado= v; // fim da classe public class Protocolo! public void analisemensagem(string m);! public boolean hasinstruction();! public String getmessage(); public boolean execute() return false; 16

public class ProtocoloSimples extends Protocolo private boolean doit = false; private String mensagem =, comando, mensagemderetorno;! public void analisemensagem(string mens) mensagem = ; if (mens.length() > 1) System.out.println("Recebi do servidor:"+mens); if (mens.lastindexof("[nome?]") > -1) comando = executar showinputdialog ; System.out.println("Pedido de indentificação feito pelo servidor."); if (mens.lastindexof("[exit]")>-1) System.exit(0); if (mensagem.length() > 0) doit = true; else doit = false;! public boolean hasinstruction() return doit;! public String getmessage() return mensagem; public boolean execute() if (doit) if (comando.equalsignorecase( executar showinputdialog ) ) mensagem = javax.swing.joptionpane.showinputdialog( Qual é o seu nome? ) ; return true; 17

Como representar o dono da loja? O Dono da Loja é representado pela classe java.net.serversocket java.net.serversocket 18

Dinamica da Loja O Dono da Loja fica monitorando a porta da loja. A cada cliente que entrar na loja, um Vendedor será enviado para atender esse cliente. Cada vendedor tem uma conversa privada com o seu respectivo cliente. Ao final da conversa, o vendedor não terá mais utilidade e será deletado. 19

As Classes Servidor e Vendedor 20

Início da Definição do Servidor ( Loja ) import java.io.*; import java.net.*; import java.util.*; public class Loja extends Thread!private int porta;!private ServerSocket donodalojinha;!private ObjectOutputStream output; /*fluxo de saida de dados.*/ private ObjectInputStream instream; /*fluxo de entrada de dados.*/ private Vector<Vendedor> listavendedor = new Vector<Vendedor>(); /*Vetor que guarda os vendedores */ private Vendedor vendedordavez;... 21

Abertura da Loja... public void conecta(int porta) /* armazena o numero da porta em uma variavel denomiada por "porta"!*/ this.porta = porta; try donodalojinha = new java.net.serversocket(porta); /* tenta se conectar com a porta.*/ catch(java.io.ioexception e)e.printstacktrace(); System.exit (1); System.out.println("A Loja estah aberta na porta " + porta + "!!"); public Loja(String n,int gate) setname(n); /*define, para o sistema operacional o nome do servico da thread*/ conecta(gate); 22

O Dono da Loja aguarda por clientes... public void run() while(true) try /* ServerSocket.accept() => espera por clientes. quando o cliente solicita conexao, uma instancia da classe Vendedor eh criada para representar essa conexao. */ vendedordavez =new Vendedor(donoDaLojinha.accept()); vendedordavez.start();/* thread do vendedor é disparada*/ addvendedor(vendedordavez); vendedordavez.informe( "Bem Vindo a porta : "+porta); vendedordavez.informe("[nome?]"); catch (java.io.ioexception e) // fim do while 23

Adiciona e Remove Vendedor private void removevendedor(vendedor j) listavendedor.remove(j); private void addvendedor (Vendedor j) listavendedor.add(j);! 24

A Representação do Vendedor (Classe Interna à Loja ) public class Loja extends Thread... class Vendedor extends Thread private ObjectOutputStream output; // fluxo de saida de dados. private ObjectInputStream instream;// fluxo de entrada de dados. private Socket connection; // armazena ponteiro para o servidor. private boolean noar=true; private String nome=""; // construtor da classe public Vendedor(Socket s) connection=s; // armazena a conexao com o servidor. try output = new ObjectOutputStream(s.getOutputStream()); // cria fluxo de saida de dados. instream = new ObjectInputStream(s.getInputStream()); // cria fluxo de entrada de dados. output.flush(); // limpa o Buffer. catch (IOException e)... 25

Dinâmica do Vendedor public void run() String fofoca; int x; while(noar) fofoca=ouvir(false); x = fofoca.indexof("bye"); // se o cliente enviou a instrucao para desconectar-se // do servidor, x armazenarah um valor superior a // (-1).! if ( x >= 0) this.noar=false;this.interrupt();! Loja.this.removeVendedor(this); System.out.println("Pedido de exclusão recebido!"); informe("[exit]"); // informa ao cliente que ele foi desconectado continue; /* busca por padrao do protocolo de comunicacao*/ informe( Eu terei o maior prazer em atende-lo(a) ); 26

Método de Envio de Mensagem do Vendedor para o Cliente private void informe(string m) try output.writeobject(m); output.flush(); catch (java.io.ioexception e)! System.out.println( "Erro de envio de mensagem"); this.closeconnection();! noar=false; // se um erro acontecer, entao desconectar o // Vendedor e desligar a Thread. 27

Método de Recebimento de Mensagem do Cliente para o Vendedor private String ouvir(boolean eco) String saida = new String(""); try saida = String.valueOf(inStream.readObject()); if (eco) System.out.println("ouvi " + saida); catch (IOException e ) System.out.println(e); catch (java.lang.classnotfoundexception clerr) System.out.println(clerr); catch (NullPointerException err)system.out.println(err);!! return saida;!! 28

O Cliente for embora. Hora de excluir o Vendedor. // rotina que permite retirar o Vendedor da lista // de Vendedores e desconectar o cliente do servidor. private void closeconnection() try! Loja.this.removeVendedor(this);! if (this.isalive())! this.interrupt();! // encerra a Thread. this.connection.close();!! catch (Exception exp) System.out.println("Cliente ausente"); // fim d classe vendedor. 29

Abertura da Loja public static void main(string[] a) Loja s = new Loja("Padaria",5555); s.start(); public class Cliente extends ConversaServidor public Cliente(int porta, Protocolo p) super("127.0.0.1",porta, p);! public static void main(string[] a)! Cliente c1 = new Cliente(5555, new ProtocoloSimples());! c1.start(); 30

Tarefa Adaptando o exemplo apresentado, você deverá criar uma aplicação cliente-servidora. O servidor terá a função de receber dois números inteiros e deverá retornar ao cliente a o resultado da soma desses dois números. 31