Mecanismos de Comunicação. Sockets em java (http://java.sun.com/docs/books/tutorial/networking/sockets/)



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

Comunicação entre processos

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

Programação de Sockets

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

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

Programação com sockets (em Java)

INF1013 MODELAGEM DE SOFTWARE

Programação de sockets com TCP

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

Java 2 Standard Edition Fundamentos de

Cliente-servidor com Sockets TCP

Aula 30 - Sockets em Java

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

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

Programação de Sockets

Programação: Sockets em Java

FTP FILE F TRANSFER PROTOCOL. Tópicos

Caso 1 NetScanner Main

Capítulo 6. Java IO - Ficheiros

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

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

Utilização das classes Java para comunicação TCP/IP e UDP/IP

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

Redes de Computadores I

Conceitos Básicos. Conceitos Básicos. Networking. Programando para redes em Java. empregando os protocolos:

Sistemas Distribuídos

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

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

Ler e escrever bytes, caracteres e Strings de/para a entrada e saída padrão. Ler e escrever bytes, caracteres e Strings de/para arquivos

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

Java : Comunicação Cliente-Servidor.

INF01018 Aula Prática 1 Cliente-Servidor e Multicast

Sistemas Distribuídos Java Sockets

Sistemas Distribuídos

Exercícios de Revisão Java Básico

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

Redes de Computadores Programação com Sockets

Executando comandos do Sistema Operacional em uma aplicação WEB Java

Sistemas Distribuídos

Sockets. Bruno Guimarães Lucas Rossini

Programação de Computadores II TCC /Turma A 1

Sockets com Java Parte I

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

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

Cliente-servidor com Sockets TCP

Um pouco do Java. Prof. Eduardo

Escola Superior de Gestão e Tecnologia. Tratamento de Exceções

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

Computação Distribuída

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

Programação II Java Streams. Christopher Burrows

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

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

UNIVERSIDADE FEDERAL DO PARANÁ

Num sistema de objectos distribuídos, dois conceitos são fundamentais.

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

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

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

Java Server Pages. Arquitectura de uma aplicação distribuída em Internet. Figura 1 Modelo 2

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

Programação de Redes de Computadores em Java

Redes de Computadores II. Programação com Sockets em Python

Ficheiros. Ficheiros - Motivação. Streams. Entrada Binária. Não. Ficheiro

Redes de Computadores I Licenciatura em Eng. Informática e de Computadores 1 o Semestre, 26 de Outubro de o Teste A

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

Licenciatura em Engenharia Informática PROVA DE TESTE PRÁTICO Sistemas Distribuídos I 2º Semestre, 2005/2006

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução

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

Equivale a um conjunto de if 's encadeados, porém mais estruturado.

Adriano Reine Bueno Rafael Barros Silva

Grupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais

Sistemas Distribuídos. Prof. Ricardo Ribeiro dos Santos

Passagem de Mensagens

User Datagram Protocol

Criando documentos XML

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

Hadoop - HDFS. Universidade Federal de Goiás Ciência da Computação

Rede de Computadores (REC)

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

Grupo I [7v] 1. [1,0] Apresente o conteúdo do IDL relativo a este programa. Assuma PROGRAM=62015 e VERSION=1.

Invocação de Métodos Remotos

Módulo VIII Linguagem Java Entrada e Saída de Dados Arquivos

Conexão Socket na MIDP

Grupo I [6,6v] Responda com os valores que se observam depois da chamada acontecer. 1 Falta na mensagem de resposta. Valor retornado na chamada

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

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

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

Transcrição:

Mecanismos de Comunicação Sockets em java (http://java.sun.com/docs/books/tutorial/networking/sockets/)

Sockets o que é? Um socket é um mecanismo de comunicação (dois sentidos) entre dois programas a funcionar (normalmente) numa rede O pacote java.net contém duas classes Socket e ServerSocket que implementam, respectivamente, o cliente e o servidor numa ligação

Sockets o que é? Uma aplicação servidor é executada numa determinada máquina e tem um socket ligado a uma porta específica dessa máquina O servidor espera que um cliente faça um pedido de ligação através desse socket Servidor (escuta numa porta específica) Pedido de ligação Cliente

Sockets o que é? O servidor ao aceitar a ligação cria um novo socket para uma porta diferente (e assim permite novas ligações) No lado do cliente um socket é criado e é usado para comunicar com o servidor (numa porta disponível na máquina cliente). Servidor (escuta numa porta específica) Ligação (por um outra porta) O cliente e o servidor podem agora comunicar lendo e escrevendo nos seus sockets. Cliente (porta disponível)

Sockets o que é? O pacote java.net contém a classe Socket que esconde todos os detalhes particulares a cada sistema. Ainda tem uma segunda classe, SocketServer, que implementa a parte de servidor. Servidor (escuta numa porta específica) Ligação (por um outra porta) Cliente (porta disponível)

Sockets Exemplo cliente import java.io.*; import java.net.*; public class EchoClient { public static void main(string[] args) throws IOException { Socket echosocket = null; PrintWriter out = null; BufferedReader in = null; try { echosocket = new Socket("max.uma.pt", 7); out = new PrintWriter(echoSocket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader( echosocket.getinputstream())); catch (UnknownHostException e) { System.err.println("Não encontro o host: Max."); System.exit(1); catch (IOException e) { System.err.println("Não foi possível a ligação a: Max."); System.exit(1); BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); String userinput; while ((userinput = stdin.readline())!= null) { out.println(userinput); System.out.println("echo: " + in.readline()); out.close(); in.close(); stdin.close(); echosocket.close(); Ligação à porta 7 (Echo Server) A negrito: a definição do socket e como pode ser lido e escrito Passos para o criar um cliente: 1. Abrir um socket; Ciclo while para enviar e receber mensagens 2. Criar os streams de leitura e escrita 3. Ler e escrever mediante os objectivos do sistema 4. Fechar os streams. 5. Fechar o socket.

Sockets Exemplo Servidor import java.net.*; import java.io.*; public class KnockKnockServer { public static void main(string[] args) throws IOException { ServerSocket serversocket = null; try { Classe servidor serversocket = new ServerSocket(4444); catch (IOException e) { System.err.println("Could not listen on port: 4444."); System.exit(1); Socket clientsocket = null; try { clientsocket = serversocket.accept(); catch (IOException e) { System.err.println("Accept failed."); System.exit(1); PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); BufferedReader in = new BufferedReader( new InputStreamReader( clientsocket.getinputstream())); String inputline, outputline; KnockKnockProtocol kkp = new KnockKnockProtocol(); outputline = kkp.processinput(null); out.println(outputline); while ((inputline = in.readline())!= null) { outputline = kkp.processinput(inputline); out.println(outputline); if (outputline.equals("bye.")) break; out.close(); in.close(); clientsocket.close(); serversocket.close(); Espera o pedido de ligação do cliente O resto é semelhante ao cliente

Sockets Exercício Copie os ficheiros do exemplo Knock Knock Server e adapte de forma que o cliente execute na máquina do laboratório e o servidor no max.uma.pt Nota: este servidor aceita múltiplas ligações Página: http://java.sun.com/docs/books/tutorial/networking/sockets/clientserver.html

Sockets Stream Vs Datagrama Stream (TCP): existe uma ligação entre cliente e servidor (iniciada, mantida e terminada) Vantagem: fiável Desvantagem: velocidade Datagrama (UDP): mensagem independente cuja entrega, tempo e conteúdo não são garantidos Vantagem: rapidez Desvantagem: não é fiável

Sockets Datagrama O Java tem as classes DatagramPacket e DatagramSocket no pacote java.net que implementa a comunicação de Datagramas sobre o UDP. Para mais informação ver: http://java.sun.com/docs/books/tutorial/networking/datagrams/