Sistemas Distribuídos Java Sockets

Documentos relacionados
Passagem de Mensagens

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

Sockets e Threads em Java

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

Sockets. Bruno Guimarães Lucas Rossini

Programação com sockets (em Java)

INF01018 Aula Prática 1 Cliente-Servidor e Multicast

Java 2 Standard Edition Fundamentos de

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

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

Resumo das Propriedades de UDP e de TCP

Programação de Sockets

Sistemas Distribuídos

Curso de especialização em Teleinformática Disciplina Sistemas Distribuídos Prof. Tacla

Comunicação entre processos

Sistemas Distribuídos

Orientação a Objetos

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

Programação: Sockets em Java

Programação de sockets com TCP

Cliente-servidor com Sockets TCP

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

INF1013 MODELAGEM DE SOFTWARE

UNIVERSIDADE. Sistemas Distribuídos

Implementando comunicação em JAVA via Sockets. Alcides Calsavara - alcides@ppgia.pucpr.br Leonardo R. Nunes - leonardo@sumersoft.

Mecanismos de Comunicação. Sockets em java (

Redes de Computadores. Camada de Transporte

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

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

Programação com Sockets TCP e UDP - Cliente. Gustavo Leitão

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia

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

Java : Comunicação Cliente-Servidor.

Aula Prática. Comunicação em SOCKTS. Disciplina: INF01151

Traceroute É uma ferramenta de diagnóstico que rastreia a rota de um pacote através de uma rede de computadores e que utiliza os protocolos IP e ICMP.

Programa de Computador que funciona em Rede

Modelo Cliente/Servidor e Introdução a Sockets

Programação de Sockets

UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTÁTISTICA GRADUAÇÃO EM CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMUNICAÇÃO DE DADOS

Tópicos em Sistemas Distribuídos. Modelos de Comunicação

Um pouco do Java. Prof. Eduardo

User Datagram Protocol

Prof. Marcelo Cunha Parte 5

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais

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

Redes de Computadores II

PROTOCOLOS DE COMUNICAÇÃO

Sistemas Distribuídos

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

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Acesso Remoto Placas de captura

Sockets com Java Parte I

Sistemas Distribuídos. Coulouris Capítulo 4

Capítulo 7 CAMADA DE TRANSPORTE

MÓDULO 8 Modelo de Referência TCP/IP

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

No projeto das primeiras redes de computadores, o hardware foi a principal preocupação e o software ficou em segundo plano.

Programação de Sockets em C/C++

Rede de Computadores II

Camada de Transporte. Bruno Silvério Costa

Teleprocessamento e Redes (MAB-510) Gabarito da Segunda Lista de Exercícios 01/2010

Engenharia Elétrica Eletrônica Slides 20: TCP/IP em Winsocks 2. API do Windows para programar utilizando o protocolo TCP/IP Prof. Jean Marcelo SIMÃO

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Java ME e suas principais tecnologias de conectividade. Gracieli Begia Mateus

Redes de Computadores

Introdução à Computação Móvel IP Móvel. Movimentação de Host. Movimentação de Host. Francisco José da Silva e Silva

Aula 30 - Sockets em Java

Aula 3. Objetivos. A internet.

Comunicação em Sistemas Distribuídos

sockets interprocess communication Taisy Weber

Comunicação entre Processos

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

Sistemas Operacionais:

FTP FILE F TRANSFER PROTOCOL. Tópicos

Aula 2 Arquitetura de Redes. Prof. Dr. S. Motoyama

Computação Distribuída


Sockets em Ruby. Curso de Tecnologia em Redes de Computadores Programação para Redes

Protocolos de Redes Revisão para AV I

Redes de Computadores

Disciplina de Redes de Computadores Estudo Dirigido para a Prova II Professor Dr Windson Viana de Carvalho

Conexão Socket na MIDP

REDES DE COMPUTADORES

Redes de Computadores (PPGI/UFRJ)

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos

Redes de Computadores

Eng.ª Informática. Redes de Computadores. Frequência. 4 de Julho de 2006

Manual de Instalação e Configuração MySQL

Teleprocessamento e Redes

Comunicação por sockets

MODELO CLIENTE SERVIDOR

Redes de Computadores I - Protocolos de Controle: ICMP. por Helcio Wagner da Silva

UMA ABORDAGEM SOBRE A INTERFACE DE PROGRAMAÇÃO DE APLICAÇÕES SOCKETS E A IMPLEMENTAÇÃO DE UM SERVIDOR HTTP

Transcrição:

Sistemas Distribuídos Java Sockets Departamento de Informática, UFMA Graduação em Ciência da Computação Francisco José da Silva e Silva 1 Introdução a Java Sockets Socket é o ponto final de um enlace de comunicação estabelecido entre dois programas que se comunicam em rede; Sua interface de programação utiliza o conceito de portas de comunicação. O socket é associado a um número de forma a tornar possível à camada TCP localizar a aplicação que deve receber os dados; Extensão de um dos conceitos mais fortes do Unix: toda E/S deve parecer ao programador como uma E/S de arquivo; O pacote java.net disponibiliza as classes necessárias para programação com sockets em Java; Leitura recomendada: tutorial da Sun All About Sockets, disponível em: http://java.sun.com/docs/books/tutorial/networking/sockets/index.html 1.1 Java Sockets: Classes TCP orientado a conexão java.net.socket java.net.serversocket UDP sem conexão java.net.datagrampacket java.net.datagramsocket 2 Java Sockets Orientado a Conexão O servidor executa em um computador específico e possui um socket associado a um número de porta; O servidor apenas escuta, aguardando que um cliente solicite o estabelecimento de uma conexão; O cliente deve conhecer em qual máquina o servidor está sendo executado e a porta no qual ele escuta. O servidor aceita a conexão e recebe um novo socket associado à mesma porta; 1

Ele necessita do novo socket para poder continuar escutando no socket original por requisições de conexão, enquanto atende o cliente já conectado; Do lado cliente, se a conexão foi aceita, um socket é criado para ser utilizado na comunicação com o servidor; O cliente e o servidor podem agora se comunicar, escrevendo e escutando em seus respectivos sockets: 2.1 Código Cliente O Cliente: 1. Cria o socket através do construtor da classe Socket; 2. Tenta estabelecer uma conexão com o servidor; 3. Uma vez estabelecida a conexão, envia e recebe fluxos de dados; 4. Quando a comunicação for concluida, fecha a conexão. 2.2 Código Servidor O Servidor: 1. Cria um ServerSocket; 2. Escuta no socket através do método accept(); 3. Uma vez estabelecida a conexão, envia e recebe fluxos de dados; 4. Quando a comunicação for concluida, fecha a conexão. 5. Tipicamente retorna ao passo 2. 2.3 Exemplo de Código Exemplo de código. uso de sockets com conexão: ClienteComConex~ao.java ServidorComConex~ao.java 2

2.4 java.net.socket Esta classe implementa sockets cliente que utilizam conexão. Alguns Construtores: Socket(InetAddress address, int port) Creates a stream socket and connects it to the specified port number at the specified IP address; Socket(InetAddress address, int port, InetAddress localaddr, int localport) Creates a socket and connects it to the specified remote address on the specified remote port; Socket(String host, int port) Creates a stream socket and connects it to the specified port number on the named host; Socket(String host, int port, InetAddress localaddr, int localport) Creates a socket and connects it to the specified remote host on the specified remote port. Alguns métodos: void close() Closes this socket; InetAddress getinetaddress() Returns the address to which the socket is connected; InetAddress getlocaladdress() Gets the local address to which the socket is bound; int getlocalport() Returns the local port to which this socket is bound; int getport() Returns the remote port to which this socket is connected; boolean isclosed() Returns the closed state of the socket; boolean isconnected() Returns the connection state of the socket. Os dados são enviados e recebidos através de fluxos de entrada e saída. Os seguintes métodos são utilizados: InputStream getinputstream() Returns an input stream for this socket. OutputStream getoutputstream() Returns an output stream for this socket. 2.5 java.net.serversocket Esta classe implementa socket servidor que utiliza conexão. Um socket servidor espera por requisições que venham da rede. Ele realiza operações baseadas na requsição e possivelmente envia os resultados ao requerente. Um Construtor: ServerSocket(int port) Creates a server socket, bound to the specified port. Alguns métodos: Socket accept() Listens for a connection to be made to this socket and accepts it; 3

void close() Closes this socket; InetAddress getinetaddress() Returns the local address of this server socket; int getlocalport() Returns the port on which this socket is listening; SocketAddress getlocalsocketaddress() Returns the address of the endpoint this socket is bound to, or null if it is not bound yet; boolean isbound() Returns the binding state of the ServerSocket; boolean isclosed() Returns the closed state of the ServerSocket; 3 Java Sockets sem Conexão Algumas aplicações não requerem o canal seguro de comunicação ponto-a-ponto provido pelo protocolo TCP; Nestes casos, a aplicação pode utilizar um modo de comunicação que entrega pacotes independentes cuja entrega e sequenciamento das mensagens não são garantidos; O protocolo UDP provê este serviço. 3.1 Classes Utilizadas Classes utilizadas: DatagramPacket: insere bytes em um pacote UDP denominado datagrama; DatagramSocket: envia e recebe datagramas UDP; Para enviar dados, insere-se os mesmos em um DatagramPacket, enviando-o através do DatagramSocket; Para receber dados, recebe-se um DatagramPacket através de um DatagramSocket, procedendo-se em seguida a remoção dos dados a partir do pacote; O mesmo tipo de socket é utilizado tanto no cliente quanto no servidor; Trabalha com pacotes individuais e não com fluxo: os dados enviados em um datagrama são enviados em um único pacote; O socket não é dedicado a uma única conexão. 3.2 Exemplo de Código Exemplo de código. uso de sockets sem conexão: ClienteSemConex~ao.java ServidorSemConex~ao.java 4

3.3 java.net.datagrampacket Datagram packets are used to implement a connectionless packet delivery service. Each message is routed from one machine to another based solely on information contained within that packet. Multiple packets sent from one machine to another might be routed differently, and might arrive in any order. Packet delivery is not guaranteed. Alguns Construtores: DatagramPacket(byte[] buf, int length) Constructs a DatagramPacket for receiving packets of length length. DatagramPacket(byte[] buf, int length, InetAddress address, int port) Constructs a datagram packet for sending packets of length length to the specified port number on the specified host. DatagramPacket(byte[] buf, int offset, int length) Constructs a DatagramPacket for receiving packets of length length, specifying an offset into the buffer. DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port) Constructs a datagram packet for sending packets of length length with offset ioffsetto the specified port number on the specified host. Alguns Métodos: InetAddress getaddress() Returns the IP address of the machine to which this datagram is being sent or from which the datagram was received. byte[] getdata() Returns the data buffer. int getlength() Returns the length of the data to be sent or the length of the data received. int getport() Returns the port number on the remote host to which this datagram is being sent or from which the datagram was received. void setaddress(inetaddress iaddr) Sets the IP address of the machine to which this datagram is being sent. void setdata(byte[] buf) Set the data buffer for this packet. void setdata(byte[] buf, int offset, int length) Set the data buffer for this packet. void setlength(int length) Set the length for this packet. void setport(int iport) Sets the port number on the remote host to which this datagram is being sent. 3.4 java.net.datagramsocket A datagram socket is the sending or receiving point for a packet delivery service. Each packet sent or received on a datagram socket is individually addressed and routed. Multiple packets sent from one machine to another may be routed differently, and may arrive in any order. Um Construtor: DatagramSocket(int port, InetAddress laddr) Creates a datagram socket, bound to the specified local address. 5

Alguns Métodos: void close() Closes this datagram socket. InetAddress getinetaddress() Returns the address to which this socket is connected. InetAddress getlocaladdress() Gets the local address to which the socket is bound. int getlocalport() Returns the port number on the local host to which this socket is bound. SocketAddress getlocalsocketaddress() Returns the address of the endpoint this socket is bound to, or null if it is not bound yet. int getport() Returns the port for this socket. Métodos para envio e recebimento de pacotes: void receive(datagrampacket p) Receives a datagram packet from this socket. void send(datagrampacket p) Sends a datagram packet from this socket. 6