Programação Cliente - Servidor
Programação Cliente - Servidor
Programação Cliente - Servidor
Programao Cliente/Servidor
DEFINIO As aplicaes clientes e servidoras so programas executando em mquinas distintas, trocando informao atravs de uma rede de computadores. Para que os servios possam ser solicitados, a aplicao cliente deve conhecer quem fornece o servio (o endereo da aplicao servidora) e qual o protocolo pr-estabelecido para realizar a solicitao.
Fonte:http://www.dca.fee.unicamp.br/cursos/PooJava/network/cs.html
Programao Cliente/Servidor
VANTAGENS Relaciona a execuo de processos distintos.
Oferece uma estruturao do processamento distribudo baseado no conceito de servios: Servidor: provedor de servios Cliente: consumidor de servios
Programao Cliente/Servidor
VANTAGENS Permite compartilhamento de recursos Servidor pode atender a vrios clientes Oferece transparncia de localizao Tratamento uniforme independentemente de processos estarem na mesma mquina ou em mquinas distintas
Programao Cliente/Servidor
VANTAGENS Permite a comunicao atravs da troca de mensagens Arquitetura fracamente acoplada Mensagens para solicitaes (cliente para servidor) e respostas (servidor para cliente)
Programao Cliente/Servidor
VANTAGENS Encapsula servios Cliente no precisa saber como servidor implementa o servio, mas apenas a interface para solicitao e resposta.
Programao Cliente/Servidor
Introduo programao em rede A principal vantagem nesse modelo de programao a possibilidade de distribuir tarefas computacionalmente pesadas e conjuntos extensos de dados/informaes entre diversas mquinas.
Programao Cliente/Servidor
Introduo programao em rede importante tambm que os dispositivos envolvidos na troca de mensagens comuniquem-se usando uma mesma linguagem, ou protocolo. Protocolos so organizados em camadas (ou pilhas) de diferentes nveis de abstrao.
Programao Cliente/Servidor
Introduo programao em rede O conjunto de protocolos mais comuns na programao em rede aquele estabelecido pela arquitetura TCP/IP, que opera com um software de suporte oferecido pelo sistema operacional de uma mquina ligada em rede.
Programao Cliente/Servidor
Conexes TCP Java suporta a troca de bytes entre um cliente e um servidor TCP atravs do estabelecimento de uma conexo entre eles. A conexo pode ser interpretada como uma ligao direta entre os dois processos, atravs da qual os bytes podem fluir nos dois sentidos.
Programao Cliente/Servidor
Conexes TCP Para estabelecer a conexo TCP, preciso identificar as extremidades dessa conexo tanto no processo cliente como no processo servidor. Essas extremidades so soquetes, identificados por um endereo de rede e um nmero de porta.
Programao Cliente/Servidor
Conexes TCP O estabelecimento da conexo entre os dois processos d-se atravs da instanciao de um objeto da classe Socket a partir do processo cliente. Uma vez que a conexo entre cliente e servidor tenha sido estabelecida pela criao dos correspondentes soquetes, os dados da aplicao podem fluir atravs dos streams a ela associados.
Streams implementam o conceito de cadeias unidirecionais de dados (FIFO, First-In, First-Out) apenas de escrita ou apenas de leitura. Assim, uma aplicao pode obter dados do incio de um stream de entrada e pode enviar dados para o final de um stream de sada de dados, sempre seqencialmente.
Programao Cliente/Servidor
Conexes TCP O processo servidor na arquitetura TCP deve estar preparado para responder a solicitaes de conexes por parte dos clientes, permanecendo em estado de espera (listening) entre solicitaes. A classe Java que oferece essa funcionalidade a classe ServerSocket.
Programao Cliente/Servidor
Servidores TCP/IP Um servidor TCP/IP deve realizar duas tarefas bsicas: permanecer em execuo aguardando (listening) a chegada de requisies em alguma porta prespecificada; e responder solicitao atravs de uma conexo estabelecida com o cliente em funo da requisio recebida.
Programao Cliente/Servidor
Servidores TCP/IP Em Java, a classe que permite a criao de servidores com essa funcionalidade ServerSocket. O principal mtodo desta classe accept(), que implementa a espera bloqueada por uma solicitao no endereo de porta especificado na construo do objeto. O retorno desse mtodo um objeto da classe Socket que complementa a conexo com o soquete da aplicao cliente.
Exemplo
Programao Cliente/Servidor
Programao UDP em Java Aqui sero apresentadas as funcionalidades que Java oferece para a programao cliente-servidor usando o protocolo de transporte UDP.
Programao Cliente/Servidor
Programao UDP em Java A principal diferena em relao programao clienteservidor em TCP que o protocolo UDP no suporta o conceito da transferncia por streams de dados. UDP trabalha diretamente com o conceito de pacotes (datagramas).
Programao Cliente/Servidor
Programao UDP em Java Assim, UDP no oferece a garantia de envio/recepo e nem de ordenao correta dos pacotes. Por outro lado, a ausncia desses mecanismos permite uma transferncia mais rpida.
Programao Cliente/Servidor
Programao UDP em Java Os principais conceitos relacionados programao cliente-servidor em UDP incluem a forma de identificar o endereo de um processo IP, a criao de soquetes UDP, a transmisso de dados por Datagramas e a comunicao Multicast.
Um MulticastSocket uma especializao de um DatagramSocket que permite que uma aplicao receba pacotes datagramas associados a um endereo multicast (classe D, entre 224.0.0.1 e 239.255.255.255). No preciso nenhuma funcionalidade especial para apenas enviar datagramas para um endereo multicast.