·

Cursos Gerais ·

Linguagens de Programação

Send your question to AI and receive an answer instantly

Ask Question

Preview text

Ambiente de rede e sockets profº Mauricio Conceição Mario httpmesonpicatcbpfbrredesmodeloosihtml Camadas do modelo OSI Open System Interconnection httpswwwgooglecombrsearchqcamadasosi Internet proporciona a interoperação de redes heterogêneas e a comunicação fimafim 2 tipos de rede Rede física enlace ou tecnologia de comunicação Ethernet WiFi xDSL HDLC Frame Relay Rede lógica responsável por compatibilizar interconexão das redes físicas de diferentes tecnologias Rede x Rede y Internet Camada de rede implementa o endereçamento lógico e o roteamento Utiliza o Protocolo IP Internet Protocol Camada de transporte oferece um serviço de comunicação para os elementos em comunicação faz a multiplexação através do conceito de portas Exemplos Protocolos de Transporte Transmission Control Protocol TCP e User Datagram Protocol UDP Camada de aplicação oferece o serviço de comunicação para o usuário navegação Web por exemplo Utilizam protocolos de transporte TCP e UDP Internet utiliza arquitetura TCPIP Rede x Rede y Internet Protocolo de rede IP é responsável pelo roteamento de pacotes que é o procedimento de decidir o caminho conjunto de enlaces que um pacote IP deve seguir IP versão IPv4 endereços possuem tamanho de quatro octetos IP versão IPv6 endereços possuem tamanho de dezesseis octetos Protocolo de transporte TCP proporciona o acesso direto entre as aplicações e o serviço de comunicação Multiplexação através do conceito de portas uma porta é um ponto de acesso entre a camada de aplicação e a camada de transporte O número de porta indica à camada de transporte a que aplicação determinado dado recebido deve ser entregue No paradigma de comunicação clienteservidor um cliente inicia uma comunicação com o servidor utilizando uma porta padrão para o serviço desejado Uma comunicação fimafim está associada a duas portas uma para cada participante da comunicação A porta do cliente é determinada de forma automática enquanto a porta do servidor está relacionada ao serviço a ser disponibilizado porta cliente endereço IP porta servidor endereço IP Comunicação fimafim camadas de transporte e aplicação Endereço de transporte Número de porta TCP nos servidores Web A porta TCP identifica uma aplicação específica no hardware do servidor Uma porta TCP é um número de 16 bits Um número de porta representa uma conexão lógica com uma determinada aplicação Servidor FTP 21 TELNET 23 SMTP 25 TIME 37 80 HTTP 110 POP3 email 443 HTTPS 65536 números possíveis Cada aplicação deve ter seu próprio protocolo Os números TCP de 0 a 1023 são reservadas para serviços já conhecidos URLs Uniform Resource Locators Localizadores Uniformes de Recursos especifica uma localização na web Todo recurso na web tem seu endereço único no padrão URL URI Uniform Resource Identifier Identificador Uniforme de Recursos não precisa especificar uma localização Exemplo httpwwwxxxxxxxxxcom80diretóriosarquivohtml protocolo informa ao servidor qual protocolo de comunicação é usado nome físico do servidor aponta para um único endereço IP endereços IP podem ser numéricos no formato xxxyyyzzzaaa porta parte opcional da URL Uma aplica ção é identi ficada por uma porta se não for especificada o nº 80 é pa drão nos servidores Web caminho path da localização do recurso no servidor com a hierar quia dos diretórios recurso Internet endereço IP porta endereço IP Endereço de transporte O par de endereços de transporte endereço IP e porta identifica unicamente uma comunicação na Internet Quando um pacote IP chega ao seu destino um campo presente no cabeçalho IP é verificado para saber que tipo de protocolo de transporte TCP ou UDP está encapsulado pelo pacote IP Identificador se TCP ou UDP O conteúdo do pacote IP é direcionado então para o software UDP ou TCP do host O que caracteriza um host como um servidor Para enviarreceber informações de um host é necessário o seu endereço de rede os protocolos de aplicação e de trans porte utilizados e a porta de recepção a que o processo remoto que irá receber ou enviar os dados está associado protocolos de transporte TCP e UDP determinam o uso TCP ou não UDP de mensagens de controle enviadas e recebidas no estabe lecimento e no encerramento de conexões a funcionalidade Web email FTP SSH DNS etc associada ao host em relação ao protocolo de aplicação Internet utiliza arquitetura TCPIP protocolo Protocolo de rede IP protocolo IP não é orientado à conexão e não tem controle de erro de fluxo não tem confiabilidade na entrega dos dados garantida Comunicação virtual porque na camada de rede o serviço de comunicação não é orientado à conexão fullduplex os dois hosts participantes da comunicação podem enviar e receber in formações através da conexão TCP simultaneamente segmentos TCP estabelecem e encerram conexões efetuam reconhecimento de segmentos enviados informam tamanho da janela de recepção de dados enviam dados de usuário Protocolo de transporte TCP oferece confiabilidade na comunicação em rede e controle no fluxo de dados Internet protocolos de transporte TCP e UDP Internet protocolos de transporte TCP e UDP Protocolo de transporte UDP fornece serviço de comunicação fimafim simples sem controle de erro ou de fluxo O protocolo UDP fornece multiplexação entre diversas comunicações através do conceito de portas Suas unidades de transmissão de dados são chamadas de datagramas por utilizarem os mesmos conceitos sem conexão e não confiável dos pacotes datagramas IP Tem uma verificação de erros opcional dos dados encapsulados no datagrama Para realizar comunicação com o UDP basta apenas enviar um datagrama para um endereço IP e uma porta Se houver algum processo aguardando mensagens UDP naquela porta o datagrama é recebido e processado Não há abertura nem fechamento de conexões O TCP Transmission Control Protocol e o UDP User Datagram Protocol são protocolos relacionados à Camada 4 do Modelo OSI conhecida como camada de transporte Atualmente a maior parte dos computadores conectados em rede acaba utilizando um desses dois protocolos para se comunicar httpwwwdevmediacombrprogramacaodistribuidacomsockets29314 Internet conceito de socket Internet porta cliente endereço IP porta servidor endereço IP porta cliente endereço IP porta cliente endereço IP Protocolo de transporte TCP ou UDP aplicação Multiplexação de comunicações A abstração criada pelos sockets e formada pela Internet garante que um bit enviado por um host irá chegar ao outro host na comunicação caso o TCP seja utilizado O mesmo princípio vale para o protocolo UDP porém sem garantias de entrega É necessário apenas conhecimento dos detalhes das funções necessárias para enviar e receber dados na rede mas não da operação dos protocolos de transporte Conceito implementado pela 1ª vez no Berkeley Unix Arquitetura ClienteServidor Exemplos de aplicações Socket TCP Socket UDP profº Mauricio Conceição Mario Sockets TCP Sockets permitem realizar uma comunicação entre computadores no caso do Java entre máquinas virtuais remotas Host Servidor oferece serviços para hosts Clientes Host Cliente solicita serviços de hosts Servidores Possibilita ao desenvolvedor a comunicação de aplicações que necessitam transmitirreceber dados e também desenvolver serviços de rede como servidores Web servidor de arquivos FTP funcionalidades mais específicas como banco de dados email proxy ou qualquer outra baseado em redes TCPIP httpwwwdevmediacombrprogramacaodistribuidacomsockets29314 Sockets TCP O TCP é um protocolo orientado à conexão que permite a comunicação entre dois computadores estabelecendo uma conexão handshaking antes que qualquer transmissão de dados seja realizada Dentro desse contexto cada máquina cliente necessitará estabelecer uma conexão com o servidor abrindo um canal de comunicação entre os dois computadores É possível conectar vários clientes a um único servidor httpwwwdevmediacombrprogramacaodistribuidacomsockets29314 Aplicação ClienteServidor utilizando socket TCP Cliente conexão informa através do socket IP do servidor Porta do servidor aplicação recebe dado número enviado pelo servidor Servidor tem número de porta quantidade de conexões conexão devolve através do socket dado número Aplicação ClienteServidor utilizando socket TCP Aplicação ClienteServidor utilizando socket TCP servidor Aplicação ClienteServidor utilizando socket TCP Java em Rede Recursos Avançados de Programação Daniel G Costa Editora BRASPORTE Classe servidor Aplicação ClienteServidor utilizando socket TCP Java em Rede Recursos Avançados de Programação Daniel G Costa Editora BRASPORTE Classe cliente Aplicação ClienteServidor utilizando socket TCP Exercício 1 a Criar projeto Java no Eclipse b Criar as classes ServidorTCPNumero e ClienteTCPNumero c Inserir os códigos apresentados para as classes d Executar a classe Servidor e Executar a classe Cliente Referências Bibliográficas Java em Rede Recursos Avançados de Programação pgs 69 a 72 Sockets TCP Daniel Gouveia Costa Editora BRASPORTE Sockets UDP User Datagram Protocol Quando uma troca de informações não precisa ser confiável podese usar o protocolo UDP User Datagram Protocol pois este protocolo não garante a entrega dos pacotes o UDP não espera uma mensagem de confirmação do host de destino É de responsabilidade da aplicação receptora a remontagem dos pacotes na ordem correta e a solicitação de reenvio de pacotes que não foram recebidos O UDP utiliza datagram sockets para a troca de mensagens As principais aplicações do UDP são aplicações como transmissões de vídeo skype voip etc Exemplo serviço de voz sobre IP onde um pacote é perdido enquanto dois usuários conversam reenviar o pacote é inviável para a sequência da conversa Em Java podese trabalhar com datagramas utilizando as classes DatagramPacket e DatagramSocket do pacote javanet mais detalhes Sockets com Java Parte III httpwwwdevmediacombrsocketscomjavaparteiii9467ixzz3TzLHrCjt httpwwwdevmediacombrsocketscomjavaparteiii9467 Cliente conexão informa através do socket IP do servidor Porta do servidor conexão envia através do socket Datagrama UDP dado número Servidor tem número de porta quantidade de conexões conexão recebe através do socket Datagrama UDP dado número Aplicativo Java Sockets UDP Java em Rede Recursos Avançados de Programação pgs 74 e 75 Daniel G Costa Editora BRASPORTE Aplicativo Java Sockets UDP Java em Rede Recursos Avançados de Programação pgs 74 e 75 Daniel G Costa Editora BRASPORTE Aplicativo Java Sockets UDP Java em Rede Recursos Avançados de Programação pgs 74 e 75 Daniel G Costa Editora BRASPORTE classe Servidor arranjo de bytes com 1 byte Aplicativo Java Sockets UDP Java em Rede Recursos Avançados de Programação pgs 74 e 75 Daniel G Costa Editora BRASPORTE classe Cliente Características TCP e UDP public class ServidorTCPNumero ServerSocket servidor new ServerSocket porta 2 Socket conexao servidoraccept DataOutputStream saida new DataOutputStream conexaogetOutputStream SocketAddress s conexaogetRemoteSocketAddress Systemoutprintln Enviando número ao cliente stoString saidawriteInt12 public class ClienteTCPNumero Socket conexao new Socket enderecoServidor portaServidor DataInputStream entrada new DataInputStream conexaogetInputStream Systemoutprintln Número recebido entradareadInt public class ServidorUDPNumero DatagramSocket socket new DatagramSocket2654 byte num new byte1 DatagramPacket datagrama new DatagramPacket num 1 socketreceivedatagrama byte recebido datagramagetData public class ClienteUDPNumero DatagramSocket socket new DatagramSocket InetAddress enderecoServidor InetAddressgetByName127001 int portaServidor 2654 byte num new byte1 num0 12 DatagramPacket datagrama new DatagramPacket num 1 enderecoServidor portaServidor socketsenddatagrama Aplicativo Java Sockets UDP Java em Rede Recursos Avançados de Programação pgs 74 e 75 Daniel G Costa Editora BRASPORTE Exercício 2 a Criar projeto Java no Eclipse b Criar as classes ServidorUDPNumero e ClienteUDPNumero c Inserir os códigos apresentados para as classes d Executar a classe Servidor e Executar a classe Cliente Aplicação ClienteServidor utilizando IDE NetBeans Conceitos ClienteServidor As classes javanet possuem os recursos fundamentais para aplicações em rede com Java Java oferece comunicações baseadas em fluxos de dados os aplicativos visualizam as redes como fluxo de dados Java também oferece comunicações baseadas em pacotes Cliente solicita que alguma ação seja realizada Servidor realiza a ação e responde ao Cliente Socket é uma construção de software que representa uma extremidade final de uma conexão um aplicativo pode ler ou gravar em um socket Protocolo de transmissão utilizado TCP Aplicação ClienteServidor utilizando IDE NetBeans Criação de projeto ClienteServidor na IDE NetBeans Criar diretório pasta para o projeto Entrar no ambiente do NetBeans Escolher projeto Java categorias e Aplicativo Java projetos Nomear o projeto e escolher a pasta criada para o mesmo na Localização do Projeto profº Mauricio Conceição Mario referências Java Como Programar Deitel Aplicação ClienteServidor utilizando IDE NetBeans Ambiente da IDE NetBeans Criar novo arquivo Categorias Java e Tipos de arquivos Classe Java Passos 1 Escolha o tipo de arquivo 2 Escolha o tipo de arquivo Projeto ClienteServidor Categorias Web Struts Spring Framework Java JavaFX Formulários GUI Swing Objetos JavaBeans Formulários GUI AWT JUnit Persistence Groovy Tipos de arquivos Classe Java Interface Java Enum Java Tipo de anotação Java Exceção Java Informação sobre pacote Java JApplet Applet Classe Java principal Arquivo Java vazio Pacote Java Descrição Criar uma nova classe Java Este modelo é útil para criação de novas classes nãovisuais Aplicação ClienteServidor utilizando IDE NetBeans Nomear o arquivo como Servidor e salválo no projeto Criar novo arquivo repetindo o procedimento e nomeálo como Cliente Inserir no espaço da IDE destinado à classe Servidor a seqüência de código Classe Servidor 1 Método rodaServidor criação de um Server Socket com número da porta de acesso e quantidade de clientes chama método para espera de conexão do cliente esperaConexao chama método obtemFluxos que obtém os fluxos de entrada e saída de dados IO chama o método processoConexao que processa a conexão ClienteServidor chama o método fechaConexao para fechar a conexão 2 Método Servidor construtor de inicialização configura a interface com o usuário e as ferramentas a serem usadas chama o método enviaDado 3 Método enviaDado responsável pelo envio de mensagem ao Cliente 4 void main cria o Servidor executa o aplicativo Servidor através da chamada ao método rodaServidor Classe Servidor import javaio import javanet import javaawt import javaawtevent import javaxswing public class Servidor extends JFrame param args the command line arguments private JTextField area private JTextArea display private ObjectOutputStream saida private ObjectInputStream entrada private ServerSocket servidor private Socket conexao private int contador 1 public Servidor superServidor Container container getContentPane area new JTextField areasetEnabledfalse areaaddActionListener new ActionListener public void actionPerformedActionEvent evento enviaDadoeventogetActionCommand containeraddarea BorderLayoutNORTH display new JTextArea containeraddnew JScrollPanedisplayBorderLayoutCENTER setSize300 150 setVisibletrue public void rodaServidor try servidor new ServerSocket5000 2 whiletrue esperaConexao obtemFluxos processoConexao fechaConexao contador catchEOFException eofExceptionSystemoutprintlnCliente terminou a conexão catchIOException ioExceptionioExceptionprintStackTrace private void esperaConexao throws IOException displaysetTextEsperando por conexão conexao servidoraccept displayappendConexao contador recebido de conexaogetInetAddressgetHostName private void obtemFluxos throws IOException saida new ObjectOutputStreamconexaogetOutputStream saidaflush entrada new ObjectInputStreamconexaogetInputStream displayappendfluxo de entradasaída private void processoConexao throws IOException String mensagem sucesso na conexão do servidor saidawriteObjectmensagem saidaflush areasetEnabledtrue do try mensagem StringentradareadObject displayappend mensagem displaysetCaretPositiondisplaygetTextlength catchClassNotFoundException classNotFoundExceptiondisplayappend tipo de objeto desconhecido whilemensagemequalsclinte terminou private void fechaConexao throws IOException displayappend usuário terminou conexão areasetEnabledfalse saidaclose entradaclose conexaoclose private void enviaDadoString mensagem try saidawriteObjectservidor mensagem saidaflush displayappendservidor mensagem catchIOException ioExceptiondisplayappenderro escrevendo objeto public static void mainString args TODO code application logic here Servidor aplicacao new Servidor aplicacaosetDefaultCloseOperationJFrameEXITONCLOSE aplicacaorodaServidor Classe Cliente 1 Método rodaCliente criação de um Socket cliente com número da porta de acesso e mensagem para envio ao Servidor através da chamada ao método conectaServidor chama método obtemFluxos que cria os objetos para obter os fluxos de entrada e saída de dados IO chama o método processoConexao que processa a conexão ClienteServidor o servidor espera uma tentativa de conexão do Cliente quando o Cliente se conecta ao Servidor o aplicativo Servidor envia ao Cliente um objeto string para indicar que a conexão foi bem sucedida Em seguida o Cliente exibe uma mensagem como resposta chama o método fechaConexao para fechar a conexão 2 Método Cliente construtor de inicialização configura a interface com o usuário e as ferramentas a serem usadas chama o método enviaDado recebe como argumento a string host do Servidor 3 Método enviaDado responsável pelo envio de mensagem ao Servidor 4 void main cria o Cliente instancia o objeto relativo ao aplicativo que é inicializado recebendo como argumento um endereço IP executa o aplicativo Cliente através da chamada ao método rodaCliente Classe Cliente import java io import javanet import javaawt import javaawtevent import javaxswing public class Cliente extends JFrame private JTextField area private JTextArea display private ObjectOutputStream saída private ObjectInputStream entrada private Socket cliente private String mensagem private String servidorconexao public Cliente String host superCLIENTE servidorconexao host Container container getContentPane area new JTextField areasetEnabledfalse areaaddActionListener new ActionListener public void actionPerformedActionEvent evento enviaDadoeventogetActionCommand containeraddarea BorderLayoutNORTH display new JTextArea containeraddnew JScrollPanedisplayBorderLayoutCENTER setSize300 150 setVisibletrue Classe Cliente public void rodaCliente try conectaServidor obtemFluxos processoConexao fechaConexao catchEOFException eofExceptionSystemoutprintlnServidor terminou a conexão catchIOException ioExceptionioExceptionprintStackTrace private void obtemFluxos throws IOException saída new ObjectOutputStreamclientegetOutputStream saídaflush entrada new ObjectInputStreamclientegetInputStream displayappendfluxo de entradasaída Classe Cliente private void conectaServidor throws IOException displaysetTextTentando conexão cliente new SocketInetAddressgetByNameservidorconexao5000 displayappendconecta para clientegetInetAddressgetHostName private void processoConexao throws IOException areasetEnabledtrue do try mensagem StringentradareadObject displayappend mensagem displaysetCaretPositiondisplaygetTextlength catchClassNotFoundException classNotFoundExceptiondisplayappend tipo de objeto desconhecido whilemensagemequalsservidor terminou private void fechaConexao throws IOException displayappend terminou conexão saidaclose entradaclose clienteclose Classe Cliente private void enviaDadoString mensagem try saidawriteObjectcliente mensagem saidaflush displayappendcliente mensagem catchIOException ioExceptiondisplayappenderro escrevendo objeto public static void mainString args TODO code application logic here Cliente aplicacao ifargslength 0 aplicacao new Cliente127001 else aplicacao new Clienteargs0 aplicacaosetDefaultCloseOperationJFrameEXITONCLOSE aplicacaorodaCliente Execução do servidor em NetBeans projeto ClienteServidor primeiro executar Servidor Aplicação Cliente Servidor Exercício 3 a Criar projeto Java no NetBeans ou Eclipse b Criar as classes Servidor e Cliente c Inserir os códigos apresentados para as classes d Executar a classe Servidor e Executar a classe Cliente Referências Java como programar 4ª edição Paul Deitel Harvey Deitel Editora PEARSON 2004 Referências Bibliográficas Servlets JSP Bryan Basham Kathy Sierra e Bert Bates Ed OReilly Alta Books Java em Rede Programação Distribuída na Internet Daniel G Costa Editora Brasport 2008 Java em Rede Recursos Avançados em Programação Daniel G Costa Editora Brasport 2008 Para adicionar bibliotecas a um projeto Java no Eclipse