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



Documentos relacionados
Programação com sockets (em Java)

Sistemas Distribuídos Java Sockets

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

Programação de Sockets

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

Programação de sockets com TCP

Passagem de Mensagens

INF1013 MODELAGEM DE SOFTWARE

Sistemas Distribuídos

Java 2 Standard Edition Fundamentos de

Comunicação entre processos

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

Sistemas Distribuídos

Sockets e Threads em Java

Sockets com Java Parte I

Mecanismos de Comunicação. Sockets em java (

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

INF01018 Aula Prática 1 Cliente-Servidor e Multicast

Aula 30 - Sockets em Java

Resumo das Propriedades de UDP e de TCP

User Datagram Protocol

Cliente-servidor com Sockets TCP

Programação de Sockets

Sockets. Bruno Guimarães Lucas Rossini

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

UNIVERSIDADE. Sistemas Distribuídos

Um pouco do Java. Prof. Eduardo

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

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

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

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

Sistemas Distribuídos

Sistemas Distribuídos. Coulouris Capítulo 4

Programação: Sockets em Java

Redes de Computadores. Camada de Transporte

Redes de Computadores I

Computação Distribuída

Redes de Computadores Programação com Sockets

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

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

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

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

CAMADA DE TRANSPORTE

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

Java : Comunicação Cliente-Servidor.

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

FTP FILE F TRANSFER PROTOCOL. Tópicos

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

2 Orientação a objetos na prática

Sistemas Distribuídos. Prof. Ricardo Ribeiro dos Santos

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

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

Sistemas Operacionais:

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

Capítulo 7 CAMADA DE TRANSPORTE

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010)

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

Redes de Computadores

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais

Programando sistemas distribuídos com objetos distribuídos na rede TCP/IP. Prof. Me. Sérgio Carlos Portari Júnior

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

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

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

Capítulo IV Comunicação entre processos

Conexão Socket na MIDP

Capítulo 7 CAMADA DE TRANSPORTE

Segurança de redes com Linux. Everson Scherrer Borges Willen Borges de Deus

Invocação de Métodos Remotos

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

Redes de Computadores II

Aula 04 Operadores e Entrada de Dados. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Aula 3. Objetivos. A internet.

Redes de Computadores. TCP Orientação à Conexão. Prof. Othon M. N. Batista Mestre em Informática

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

Adriano Reine Bueno Rafael Barros Silva

ECD1200 Equipamento de Consulta de Dados KIT DE DESENVOLVIMENTO

Transporte. Sua função é: Promover uma transferência de dados confiável e econômica entre máquina de origem e máquina de destino.

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

Manual do Desenvolvedor Criptografia de Arquivos do WebTA

Capítulo 6. Java IO - Ficheiros

Um Tutorial sobre Sockets Parte I

APLICAÇÃO REDE APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE LINK DE DADOS FÍSICA 1/5 PROTOCOLOS DE REDE

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Sistemas Distribuídos

SISTEMAS DISTRIBUÍDOS

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

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

Programação Orientada a Objetos. Pacotes e CLASSPATH: Definifdo e Usando Pacotes

Programação II Java Streams. Christopher Burrows

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

Modelo Cliente/Servidor e Introdução a Sockets

Sistemas Distribuídos

REDES DE COMPUTADORES

Transcrição:

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

Conteúdo Parte I Introdução aos Sockets Tipos de Sockets Classes Java: InetAddress, Datagram Sockets, Stream Sockets, Output e Input Classes 2

Conteúdo Parte II Criando Aplicações com Datagram Sockets Exercício: BlackBoard Parte III Criando Aplicação com Stream Sockets Exercício: Talk 3

Sockets Primeiro protocolo ponto-a-ponto para a comunicação implementado sobre TCP/IP; Introduzido em 1981 como interface genérica para IPC entre sistemas UNIX; Atualmente são suportados por virtualmente todos os sistemas operacionais; 4

O que são Sockets? Sockets são pontos-finais (endpoints) para comunicação ponto-a-ponto entre sistemas; Esconde do programador alguns detalhes da rede; Implementado em três formas: Stream: Interface para TCP Datagram: Interface da UDP Raw: Interface para ICMP 5

Sockets O que são Sockets? Cliente Conexão Servidor Sockets 6

Sockets Datagram Interface para UDP (User Datagram Protocol); Pacotes independentes sem garantia de entrega; 7

Sockets Stream Interface para TCP (Transmission Control Protocol); Transporte confiável, controle de fluxo, controle de sequenciamento de pacotes;

Sockets - Portas Cada Socket consiste em duas partes Um endereço IP; Um endereço de Porta; Uma porta é uma entrada para uma determinada aplicação; Existem portas reservadas (well-known ports) para serviços específicos; Ex.:Porta 80 (Servidor HTTP) 9

Sockets - Portas Socket Net_id.Host_id.Port_ID Endereço IP Socket = Endereço IP + Número de Porta 10

Sockets Uma associação é definida como uma quíntupla { protocolo, porta local, endereço local, porta remota, endereço remoto }; Um conjunto de chamadas realizam a comunicação entre dois Sockets; 11

Java Sockets A Classe InetAddress Classe utilizada para encapsular endereços IP; Transforma um endereço IP em um objeto; Permite se obter informações úteis sobre a rede invocando métodos desses tipos de objetos; 12

Java Sockets A Classe InetAddress equals - Verifica se dois objetos representam um mesmo IP; getaddress - Obtém o endereço IP de um objeto; getbyname - Determina o endereço IP de um host dado o seu nome; getlocalhost - Obtém o IP do host local; 13

Java Sockets A Classe InetAddress (Exemplos) //Retorna IP do Host www.ifce.edu.br.br InetAddress ifce = InetAddress.getByName("www.ifce.edu.br.br"); //Retorna IP do End. 200.19.177.4 InetAddress end1 = InetAddress.getByName("200.19.177.4"); //Retorna o IP do host local InetAddress end2 = InetAddress.getLocalHost();

Java Sockets Classes para Datagramas Sockets DatagramPacket Implementa um objeto do tipo pacote ; Pacotes são enviados e recebidos pela rede utilizando sockets; O construtor da classe é invocado para criar um pacote de saída, devendo-se ser especificado um array de bytes para ser enviado, bem como o endereço e a porta destino; 15

Java Sockets Classes para Datagramas Sockets DatagramPacket Pode também ser criado um pacote de entrada (recebimento) se utilizando um construtor e se especificando um array de bytes onde a informação recebida será armazenada; O conteúdo do pacote pode ser retirado pelos métodos getdata e getlength; 16

Java Sockets DatagramPacket Construtores Pacotes de Entrada DatagramPacket (byte[] buffer, int length) Dados do pacote são recebidos e armazenados em buffer (iniciando na posição buffer[0] e continuando até os dados serem totalmente armazenados ou length bytes terem sido escritos)

Java Sockets DatagramPacket Construtores Pacotes de Saída DatagramPacket (byte[] data, int length, InetAddress destination, int port) Pacote é preenchido com length bytes do vetor data (iniciando na posição data[0]); destination e port indicam o endereço de rede e a porta do destino para onde o pacote será enviado. length deve ser menor ou igual a data.length

Java Sockets DatagramPacket Métodos de Instâcias InetAddress getaddress() Devolve o endereço de rede (IP) definido para o pacote int getport() Devolve a porta associada ao pacote

Java Sockets DatagramPacket Métodos de Instâcias byte[] getdata() Devolve um vetor de bytes contendo os dados do pacote int getlength() Devolve o número de bytes dos dados do pacote (pode ser menor que getdata().length)

Java Sockets (Criando um Pacote de Saída) import java.net.*; public class Pkt{ public static void main(string args[]){ try { // Define os dados do pacote a partir de uma string String s = "Ola Mundo!"; byte[] dados = s.getbytes(); // Define o IP e a porta a serem usados como destino do pacote InetAddress ip = InetAddress.getByName( ifce.edu.br"); int porta = 7; // Cria o pacote passando os dados da string, o IP e a porta DatagramPacket pacote = new DatagramPacket (dados, dados.length, ip, porta); } } // Mostra os dados do pacote na tela System.out.println(new String(pacote.getData(), "ASCII")); }catch (Exception e) { }

Java Sockets Classes para Datagramas Sockets DatagramSocket Implementa um socket para envio e recebimento de datagramas; Um socket pode ser criado passando-se o número da porta para o construtor; Se nenhum número for especificado uma porta livre será utilizada; O método getlocalport retorna o número da porta alocada; 22

Java Sockets Classes para Datagramas Sockets DatagramSocket O método send deve ser invocado para se enviar um objeto do tipo DatagramPacket pelo socket; O método receive deve ser invocado para se esperar por um pacote que deverá ser armazenado em um objeto do tipo DatagramPacket especificado; 23

Java Sockets Datagramas Sockets Construtores DatagramSocket() throws SocketException Cria um socket acoplado a um porta local qualquer (usado no lado do cliente) DatagramSocket(int port) throws SocketException Cria um socket acoplado à porta especificada em port (usado no lado do servidor)

Java Sockets Datagramas Sockets Métodos de Instância void send(datagrampacket dp) Envia o pacote UDP especificado em dp para o seu endereço de destino (processo é liberado imediatamente após o pacote ser enviado) void receive(datagrampacket dp) Recebe um único pacote UDP da rede e o armazena no objeto especificado em dp (processo fica bloqueado até a chegada do pacote)

Java Sockets Datagramas Sockets Métodos de Instância void close() Fecha o socket e libera a porta à qual ele estava acoplado int getlocalport() Devolve o valor da porta local acoplada ao socket

Java Sockets Cenário Datagramas Aplicação DatagramSocket new send send new OutPacket DatagramPacket new receive receive InPacket DatagramPacket close close getdata getdata 27

Java Sockets (Enviando Pacotes - 1/2) import java.net.*; import java.io.*; import java.util.scanner; public class envia{ public static void main(string args[]){ try { // Define um endereço de destino (IP e porta) InetAddress servidor = InetAddress.getByName("localhost"); int porta = 1024; // Cria o socket DatagramSocket socket = new DatagramSocket(); // Laço para ler linhas do teclado e enviá-las ao endereço de destino Scanner input = new Scanner(System.in); String linha = input.nextline();

Java Sockets (Enviando Pacotes - 2/2) } } while (!linha.equals(".")) { // Cria um pacote com os dados da linha byte[] dados = linha.getbytes(); DatagramPacket pacote = new DatagramPacket(dados, dados.length, servidor, porta); // Envia o pacote ao endereço de destino socket.send(pacote); // Lê a próxima linha linha = input.nextline(); } } catch (Exception e) {}

Java Sockets (Recebendo Pacotes - 1/2) import java.net.*; import java.io.*; public class recebe{ public static void main(string args[]){ int porta = 1024; // Define porta byte[] buffer = new byte[1000]; // Cria um buffer local try { // Cria o socket DatagramSocket socket = new DatagramSocket(porta); // Cria um pacote para receber dados da rede no buffer local DatagramPacket pacote = new DatagramPacket(buffer, buffer.length);

Java Sockets (Recebendo Pacotes - 2/2) // Laço para receber pacotes e mostrar seus conteúdos na saída padrão while (true) { socket.receive(pacote); String conteudo = new String(pacote.getData(), 0, pacote.getlength()); System.out.println("End. Origem: " + pacote.getaddress()); System.out.println("Conteudo Pacote: " + conteudo + "\n"); // Redefine o tamanho do pacote pacote.setlength(buffer.length); } } catch (Exception e) {} } }