76
Programação com Sockets Docente: MSc. Angel Alberto Vazquez Sánchez ISUTIC 2017

ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Programação com Sockets

Docente: MSc. Angel Alberto Vazquez Sánchez

ISUTIC2017

Page 2: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Bibliografía

● Deitel, H. M. & Deitel, H. Java: How to Program (Late Objects). (Pearson Education Limited, 2014), Chapter 27 Networking.

Page 3: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Introdução

● O Java oferece uma série de recursos de rede integrados que facilitam o desenvolvimento de aplicativos baseados na Internet e na web.

● O Java pode permitir que os programas busquem no mundo informações e colaborem com programas que funcionam em outros computadores a nível internacional, nacional ou apenas dentro de uma organização (sujeito a restrições de segurança).

Page 4: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Introdução

● As capacidades fundamentais de rede da Java são declaradas pelas classes e interfaces do pacote java.net, através das quais o Java oferece comunicações baseadas em fluxo que permitem que as aplicações vejam a rede como fluxos de dados.

● As classes e interfaces do pacote java.net também oferecem comunicações baseadas em pacotes para a transmissão de pacotes individuais de informações - comumente usado para transmitir imagens de dados, áudio e vídeo pela Internet.

● Nesta classe, mostramos como se comunicar com pacotes e fluxos de dados.

Page 5: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Introdução

● Concentramo-nos em ambos os lados da relação cliente / servidor.– O cliente solicita que alguma ação seja executada e o servidor

executa a ação e responde ao cliente.

– Uma implementação comum do modelo de solicitação-resposta é entre navegadores da web e servidores web. Quando um usuário seleciona um site para navegar através de um navegador (o aplicativo cliente), uma solicitação é enviada para o servidor web apropriado (o aplicativo do servidor).

– O servidor normalmente responde ao cliente enviando uma página da Web adequada para ser processada pelo navegador.

Page 6: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Introdução

● Apresentamos as comunicações baseadas em socket de Java, que permitem que as aplicações vejam a rede como se fosse um arquivo I/O - um programa pode ler de um socket ou escrever em um socket, assim como ler de um arquivo ou gravar em um arquivo.

● O socket é simplesmente uma construção de software que representa um ponto final de uma conexão.

● Mostramos como criar e manipular socket de fluxo e datagramas.

Page 7: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Introdução

● Com sockets de fluxo, um processo estabelece uma conexão com outro processo. Enquanto a conexão está em vigor, os fluxos de dados entre os processos em fluxos contínuos.

● É dito que os sockets de fluxo fornecem um serviço orientado a conexão. O protocolo usado para transmissão é o popular TCP (Transmission Control Protocol).

Page 8: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Introdução

● Com sockets de datagrama, pacotes de informações individuais são transmitidos.

● O protocolo utilizado - UDP, o protocolo de datagrama do usuário - é um serviço sem conexão e não garante que os pacotes chegam em qualquer ordem específica. Com UDP, pacotes podem ser perdidos ou duplicados. É necessária uma programação adicional significativa na sua parte para lidar com esses problemas (se você optar por fazê-lo).

● UDP é o mais apropriado para aplicativos de rede que não exigem verificação de erros e confiabilidade de TCP

● Os sockets de fluxo e o protocolo TCP serão mais desejáveis para a grande maioria dos aplicativos de rede Java.

Page 9: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Manipulando URLs

● A Internet oferece vários protocolos.– O HyperText Transfer Protocol (HTTP), que é a base da web, usa

URIs (Uniform Resource Identifiers) para identificar dados na Internet.

● URIs que especificam as localizações de sites e páginas da web são chamados de URLs (Uniform Resource Locators).– Os URLs comuns referem-se a arquivos ou diretórios e podem fazer

referência a objetos que executam tarefas complexas, como pesquisas de banco de dados e pesquisas na Internet.

● Se você conhece o URL de uma página da Web acessível ao público, você pode acessá-lo através do HTTP.

Page 10: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Manipulando URLs

● O Java facilita a manipulação de URLs. Quando você usa um URL que se refere à localização exata de um recurso (por exemplo, uma página da web) como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo executado acessará e exibirá esse recurso.

● O applet na Figura demonstra recursos de rede simples.– Permite ao usuário selecionar uma página da Web a partir de uma

JList e faz com que o navegador exiba a página correspondente. Neste exemplo, a rede é realizada pelo navegador.

Page 11: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Manipulando URLs

Page 12: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Processando Parâmetros do Applet

● Este applet tira proveito dos parâmetros do applet especificados no documento HTML que invoca o applet.

● Ao navegar na web, muitas vezes você encontrará aplicativos que estão no domínio público - você pode usá-los gratuitamente em suas próprias páginas da web (normalmente em troca de creditar o criador do applet).

● Muitos applets podem ser personalizados através de parâmetros fornecidos pelo arquivo HTML que invoca o applet.

Page 13: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Processando Parâmetros do Applet

● O documento HTML contém oito parâmetros especificados com o elemento param - essas linhas devem aparecer entre as tags do applet inicial e final.

● O applet pode ler esses valores e usá-los para personalizar. Qualquer número de elementos param pode aparecer entre as tags do applet inicial e final.

● Cada parâmetro tem um nome exclusivo e um valor. O método Applet getParameter retorna o valor associado a um nome de parâmetro específico como String.

Page 14: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Processando Parâmetros do Applet

● O argumento passado para getParameter é uma String contendo o nome do parâmetro no elemento param.– Neste exemplo, os parâmetros representam o título e a localização

de cada site que o usuário pode selecionar.

– Os parâmetros especificados para este applet são denominados title#, onde o valor de # é iniciado em 0 e aumenta em 1 para cada novo título.

– Cada título deve ter um parâmetro de localização correspondente da localização do formulário #, onde o valor de # começa em 0 e aumenta em 1 para cada nova localização.

Page 15: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Processando Parâmetros do Applet

● A declaração

obtém o valor associado ao parâmetro "title0" e atribui-lo ao título de referência. Se não houver uma etiqueta de param contendo o parâmetro especificado, getParameter retorna nulo.

Page 16: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Armazenando os Nomes e URLs do site

● O applet obtém do documento HTML as escolhas que serão exibidas no JList do applet.

● Class SiteSelector usa um HashMap (pacote java.util) para armazenar os nomes e URLs do site.– Neste exemplo, a chave é a String no JList que representa o nome

do site e o valor é um objeto de URL que armazena a localização do site para exibir no navegador.

Page 17: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo
Page 18: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo
Page 19: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo
Page 20: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo
Page 21: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo
Page 22: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Armazenando os Nomes e URLs do site

● Class SiteSelector também contém um ArrayList (pacote java.util) no qual os nomes dos sites são colocados para que eles possam ser usados para inicializar o JList (uma versão do construtor JList recebe uma matriz de Objetos que é retornada pelo método ArrayList toArray).

● Um ArrayList é uma matriz de referências dinamicamente redimensionável. Class ArrayList fornece o método add para adicionar um novo elemento ao final do ArrayList.

Page 23: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Lendo um arquivo em um servidor da Web

● A próxima aplicação usa o componente GUI da Swing JEditorPane (do pacote javax.swing) para exibir o conteúdo de um arquivo em um servidor web.

● O usuário insere uma URL no JTextField na parte superior da janela e o aplicativo exibe o documento correspondente (se existir) no JeditorPane.

● A classe JEditorPane é capaz de renderizar texto simples e texto formatado HTML, conforme ilustrado nas duas capturas de tela, de modo que este aplicativo atua como um navegador web simples.

Page 24: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Lendo um arquivo em um servidor da Web

● O aplicativo também demonstra como processar HyperlinkEvents quando o usuário clica em um hiperlink no documento HTML.

● As técnicas mostradas neste exemplo também podem ser usadas em applets.

● No entanto, um applet é permitido ler arquivos apenas no servidor do qual foi baixado.

Page 25: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo
Page 26: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo
Page 27: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo
Page 28: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo
Page 29: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo
Page 30: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Estabelecimento de um servidor simples usando o Stream Sockets

● Os dois exemplos discutidos até agora utilizam capacidades de rede Java de alto nível para se comunicar entre aplicativos.

● Nos exemplos, não era sua responsabilidade estabelecer a conexão entre um cliente e um servidor.– O primeiro programa baseou-se no navegador da Web para se

comunicar com um servidor web.

– O segundo programa dependia de um JEditorPane para executar a conexão.

● Esta seção começa nossa discussão sobre a criação de seus próprios aplicativos que podem se comunicar entre si.

Page 31: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Etapa 1: Criar um ServerSocket

● Estabelecer um servidor simples em Java requer cinco etapas. O Passo 1 é criar um objeto ServerSocket.

● Uma chamada para o construtor do ServerSocket, como

registra um número de porta TCP disponível e especifica o número máximo de clientes que podem esperar para se conectar ao servidor (ou seja, o comprimento da fila).

Page 32: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Etapa 1: Criar um ServerSocket

● O número da porta é usado pelos clientes para localizar o aplicativo do servidor no computador servidor.

● Isso geralmente é chamado de ponto de agitação manual. Se a fila estiver cheia, o servidor recusa as conexões do cliente.

● O construtor estabelece a porta onde o servidor espera conexões de clientes - um processo conhecido como vinculação do servidor para a porta.

● Cada cliente pedirá para se conectar ao servidor nesta porta.● Apenas um aplicativo por vez pode ser vinculado a uma porta

específica no servidor.

Page 33: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Etapa 2: aguarde uma conexão

● Programas gerenciam cada conexão de cliente com um objeto Socket. Na Etapa 2, o servidor escuta indefinidamente (ou blocos) para uma tentativa de um cliente se conectar.

● Para ouvir uma conexão de cliente, o programa chama o método ServerSocket aceitar, como em

que retorna um Socket quando uma conexão com um cliente é estabelecida.● O Socket permite que o servidor interaja com o cliente. As interações com o

cliente realmente ocorrem em uma porta de servidor diferente do ponto de handshake. Isso permite que a porta especificada na Etapa 1 seja usada novamente em um servidor multithread para aceitar outra conexão de cliente.

Page 34: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Passo 3: Obter os fluxos de E/S do Socket

● O Passo 3 é obter os objetos OutputStream e InputStream que permitem que o servidor se comunique com o cliente enviando e recebendo bytes.

● O servidor envia informações para o cliente através de um OutputStream e recebe informações do cliente através de um InputStream.– O servidor invoca o método getOutputStream no Socket para obter

uma referência ao OutputStream do Socket e

– invoca o método getInputStream no Socket para obter uma referência ao InputStream do Socket.

Page 35: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Passo 3: Obter os fluxos de E/S do Socket

● Os objetos de fluxo podem ser usados para enviar ou receber bytes individuais ou seqüências de bytes com a escrita do método OutputStream e o método InputStream lido, respectivamente.

● Muitas vezes, é útil enviar ou receber valores de tipos primitivos (por exemplo, int e double) ou Objetos serializáveis (por exemplo, Strings ou outros tipos serializáveis) em vez de enviar bytes.

● Nesse caso, podemos usar as técnicas para enrolar outros tipos de fluxo (por exemplo, ObjectOutputStream e ObjectInputStream) em torno do OutputStream e InputStream associados ao Socket.

Page 36: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Passo 3: Obter os fluxos de E/S do Socket

● Por exemplo:

Page 37: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Passo 3: Obter os fluxos de E/S do Socket

● A beleza de estabelecer essas relações é essa– Seja qual for o servidor escreve para o ObjectOutputStream é

enviado via OutputStream e está disponível no InputStream do cliente,

– e o que o cliente escreve para o OutputStream (com um ObjectOutputStream correspondente) está disponível através do InputStream do servidor.

● A transmissão dos dados através da rede é perfeita e é completamente processada por Java.

Page 38: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Etapa 4: executar o processamento

● O Passo 4 é a fase de processamento, no qual o servidor e o cliente se comunicam através dos objetos OutputStream e InputStream.

Page 39: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Etapa 5: Feche a conexão

● Na Etapa 5, quando a transmissão estiver completa, o servidor fecha a conexão invocando o método de fechamento nos fluxos e no Soquete.

Page 40: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Estabelecimento de um cliente simples usando tomadas de fluxo

Estabelecer um cliente simples em Java requer quatro etapas:● Passo 1: Criar um soquete para conectar-se ao servidor● Passo 2: Obter o Socket I / O Streams● Passo 3: executar o processamento● Passo 4: Feche a conexão

Page 41: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Passo 1: Criar um socket para conectar-se ao servidor

Na Passo 1, criamos um Socket para conectar-se ao servidor. O construtor Socket estabelece a conexão.

Por exemplo, a afirmação:

usa o construtor Socket com dois argumentos: o endereço do servidor (endereço do servidor) e o número da porta.

Page 42: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Passo 2: Obter os fluxos de E/S do Socket

Na Passo 2, o cliente usa métodos Socket getInputStream e getOutputStream para obter referências ao Socket InputStream e OutputStream.

Se o servidor estiver enviando informações sob a forma de tipos reais, o cliente deve receber as informações no mesmo formato.

Assim, se o servidor envia valores com um ObjectOutputStream, o cliente deve ler esses valores com um ObjectInputStream.

Page 43: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Passo 3: efectuar o processamento

● O Passo 3 é a fase de processamento em que o cliente e o servidor se comunicam através dos objetos InputStream e OutputStream.

Page 44: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Passo 4: Feche a conexão

● Na Passo 4, o cliente fecha a conexão quando a transmissão é concluída invocando o método de fechamento nos fluxos e no Soquete.

● O cliente deve determinar quando o servidor terminar de enviar informações para que ele possa ligar perto para fechar a conexão Socket.

● Por exemplo, o método InputStream read retorna o valor -1 quando ele detecta o fim do fluxo (também chamado de EOF-fim de arquivo).

● Se um ObjectInputStream lê informações do servidor, uma EOFException ocorre quando o cliente tenta ler um valor de um fluxo no qual o fim do fluxo é detectado.

Page 45: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Interação Cliente / Servidor com Conexões Socket Stream

● Nos próximos exemplos, usamos sockets de fluxo, ObjectInputStream e ObjectOutputStream para demonstrar um aplicativo de bate-papo cliente / servidor simples.

● O servidor aguarda uma tentativa de conexão com o cliente.● Quando um cliente se conecta ao servidor, o aplicativo do

servidor envia ao cliente um objeto String (lembre-se de que as Strings são objetos Serializable) indicando que a conexão foi bem-sucedida.

● Em seguida, o cliente exibe a mensagem.

Page 46: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Client/Server Interaction with Stream SocketConnections

● Os aplicativos de cliente e servidor fornecem campos de texto que permitem ao usuário digitar uma mensagem e enviá-la para o outro aplicativo.

● Quando o cliente ou o servidor envia a String "TERMINAR", a conexão termina.

● Em seguida, o servidor espera que o próximo cliente se conecte

Page 47: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Server Class

Page 48: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Server Class

Page 49: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Server Class

Page 50: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Server Class

Page 51: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Server Class

Page 52: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Server Class

Page 53: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo
Page 54: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Server class

Page 55: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Server class

Page 56: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Server class

Page 57: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Server class

Page 58: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Server class

Page 59: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Server Class

O construtor do servidor cria a GUI do servidor, que contém um JTextField e um JTextArea.

O servidor exibe sua saída no JTextArea.

Quando o método principal (linhas 6-11) é executado, ele cria um objeto Servidor, especifica a operação de fechamento padrão da janela e o método de chamadas runServer (linhas 57-86).

Page 60: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Client Class

● Como o servidor da classe, o construtor do cliente da classe (linhas 29-56) cria a GUI do aplicativo (um JTextField e um JTextArea).

● O cliente exibe sua saída na área de texto.● Quando o método principal (linhas 7-19) é executado, cria uma

instância de classe Cliente, especifica a operação de fechamento padrão da janela e o método de chamadas runClient (linhas 59-79).

● Neste exemplo, você pode executar o cliente a partir de qualquer computador na Internet e especificar o endereço IP ou o nome do host do computador servidor como um argumento de linha de comando para o programa.

Page 61: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Client Class

● Por exemplo, o comando

java Client 192.168.1.15● tenta se conectar ao Servidor no computador com o endereço

IP 192.168.1.15.

Page 62: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Client Class

Page 63: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Client Class

Page 64: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Client Class

Page 65: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Client Class

Page 66: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Client Class

Page 67: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Client Class

Page 68: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Client Class

Page 69: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Client Class

Page 70: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Client Class

Page 71: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Client Class

Page 72: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Client class

Page 73: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Client class

Page 74: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Client class

Page 75: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo
Page 76: ISUTIC 2017Mostramos como criar e manipular socket de fluxo e ... como um argumento para o método showDocument da interface AppletContext, o navegador no qual o applet está sendo

Conclusões