Resumo das Propriedades de UDP e de TCP

Documentos relacionados
Sockets e Threads em Java

Canais de Comunicação

User Datagram Protocol

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

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

Programação com Sockets

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

Sistemas Distribuídos Java Sockets

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

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

Sistemas Distribuídos

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

PROGRAMAÇÃO COM SOCKETS

Network Programming. Conceitos Básicos A classe InetAddress Programação de Socket TCP Programação de Socket UDP

Capítulo IV Comunicação entre processos

Programação com sockets (em Java)

Sistemas Distribuídos

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ SOCKETS UDP, TCP E MULTICAST. Prof. Cesar Augusto Tacla

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

Passagem de Mensagens

Computação Distribuída

Aula de Socket. Rafael De Tommaso do Valle

Programação de Sockets

Redes de Computadores. Protocolos TCP/IP

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

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

INF01018 Aula Prática 1 Cliente-Servidor e Multicast

Redes de computadores e a Internet. Prof. Gustavo Wagner. A camada de rede

Comunicação entre processos

Sockets. André Restivo. April 29, Faculdade de Engenharia da Universidade do Porto. André Restivo (FEUP) Sockets April 29, / 27

Comunicação entre Processos

Sockets com Java Parte I

Protocolos de Rede. Protocolos em camadas

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

Sockets - Conceitos Básicos. COMUNICAÇÃO ENTRE PROCESSOS Sockets. Conceitos Básicos. Tipos de Sockets

Mecanismos de Comunicação. Sockets em java (

Programação de sockets com TCP

Resolução de Endereços: ARP

Reader e Writer para streams de caracteres (texto).

FUNDAMENTOS DE REDES DE COMPUTADORES Unidade IV Camada de Rede. Luiz Leão

Protocolos da camada de redes. Professor Leonardo Larback

FUNDAMENTOS DE REDES DE COMPUTADORES. Lista de Exercícios AV2-01. Luiz Leão

Linguagem de Programação II Implementação

INFO ARQ REDES. Prova 2 Bimestre. Obs: Questões RASURADAS são consideradas como ERRADAS GABARITO

Programação de Sockets

AULA 3 - REDES. Prof. Pedro Braconnot Velloso

Redes de Computadores e a Internet

15/4/15. Processamento Paralelo Middleware Orientado a Objetos. Sistema operacional é a única infraestrutura para interação. Middleware é adicionado

Volnys Bernal 1. Trabalho Chat UDP. PSI 2653 Meios Eletrônicos Interativos I

ALOCAÇÃO DINÂMICA DE MEMÓRIA

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

Redes de Computadores e Aplicações

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Redes de Computadores

Exercício Programa Mini Web Server

Sistemas Operacionais - Básico e Avançado - Prof. Celso Maciel da Costa Mestrado em Informática - PUCRS

TRANSPORTE. Prof. Me. Hélio Esperidião

Protocolos TCP e UDP. Protocolo TCP. Protocolo TCP. A necessidade de uma comunicação segura: Transmission Control Protocol

Programação Java (nível intermediário) 4. Polimorfismo

Transcrição:

Relembrando... Processos duma aplicação distribuída comunicam via mensagens. O formato e o significado destas mensagens depende do protocolo usado. As mensagens são transportadas entre processos através de redes de computadores. Para uma aplicação distribuída a rede pode ser abstraída como um canal de comunicação, com determinadas propriedades. Na Internet, os protocolos de transporte normalmente usados são TCP e UDP. 1 Resumo das Propriedades de UDP e de TCP Propriedade UDP TCP Abstracção Mens. Stream Baseado em Conexão N S Fiabilidade (perda & duplicação) N S Ordem N S Controlo de Fluxo N S Número de Receptores n 1 2

Sockets: Sumário Conceito (e história). Sockets UDP API de Java API da biblioteca C. (Comunicação multicast.) 3 Sockets Origem no (UNIX) BSD 4.1c ( 1982), mas adoptada (com variações) por quase todos sistemas operativos (incluindo Windows). Fornece uma interface para qualquer das camadas da Internet (em C): Sockets APLICACAO TCP UDP IP INTERFACE Programação com sockets é muito semelhante à programação de protocolos: sockets expõem a rede ao programador ausência total de transparência. 4

Conceito de socket socket: é um objecto (do sistema operativo) que representa o ponto de acesso a um canal de comunicação entre processos. Os passos para comunicação com sockets dependem do tipo de canal usado: Sem conexão (UDP) Com conexão (TCP) Para que um processo remoto possa estabelecer um canal com um socket, é necessário atribuir um nome ao socket: uma ficha telefónica não é suficiente para estabelecer uma chamada telefónica. 5 Passos para Comunicação com Sockets UDP 1. Criar um socket: 2. Atribuir-lhe um nome (opcional) Se um socket só receber mensagens de sockets a que enviou mensagens, não é necessário atribuir-lhe explicitamente um nome. 3. Transferir informação Enviar e receber mensagens. 6

Sockets: Sumário Conceito. Sockets UDP API de Java API da biblioteca C. (Comunicação multicast.) 7 Comunicação Sem Conexão em Java Java define 2 classes especificamente para comunicação sem conexão: DatagramSocket representa um socket UDP; DatagramPacket representa um datagrama UDP. Tipicamente, uma aplicação: Cria um DatagramSocket. Envia e recebe DatagramPackets através do DatagramSocket Para usar qualquer destas classes é conveniente conhecer a classe: InetAddress representa um endereço IP; e as suas subclasses Inet4Address e Inet6Address que representam os endereços IPv4 e IPv6, respectivamente. 8

Classe InetAddress Suporta um conjunto de métodos estáticos que permitem obter objectos InetAddress associados a um nome DNS ou a um endereço IP: static InetAddress getbyaddress(byte[] addr): o endereço deve estar na ordem da rede (MSB em addr[0]) static InetAddress getbyname(string host) static InetAddress getlocalhost() Inclui ainda um conjunto de métodos utilitários, p.ex.: String gethostname(inetaddress addr) String tostring() As subclasses Inet4Address herdam estes métodos e incluem ainda alguns métodos específicos. 9 Classe DatagramPacket Suporta um conjunto de construtores: DatagramPacket( byte[] buf, int length): constrói um datagrama para receber/enviar datagramas com até length bytes; DatagramPacket( byte[] buf, int length, InetAddress address, int port): constrói um datagrama e inicializa o endereço e o porto (destino). Oferece um conjunto de operações como p.ex.: InetAddress getaddress() extrai o endereço do socket remoto; int getport() extrai o porto do socket remoto; byte[] getdata() extrai os dados do datagrama; void setdata(byte[] buf) inicializa os dados do datagrama. 10

Classe DatagramSocket (1/2) Suporta um conjunto de construtores, alguns dos quais permitem: Atribuir um nome ao socket UDP criado. IMP.- Só é necessário atribuir o nome a um socket, se se pretender que receba mensagens de sockets remotos a que não enviou mensagens previamente. Suporta operações para: Enviar (quer unicast quer broadcast) datagramas. Receber datagramas. Configurar diferentes parâmetros dos sockets, como p.ex.: tamanho de buffers; valores de temporização. 11 Construtores: Classe DatagramSocket (2/2) DatagramSocket() Cria um socket UDP sendo o seu nome determinado pelo sistema. DatagramSocket(int port) Cria um socket UDP associado ao porto especificado. DatagramSocket(int port, InetAddress addr) Cria um socket UDP com o nome especificado. Métodos: void receive(datagrampacket p) recebe um datagrama UDP que é copiado para o seu argumento. void send(datagrampacket p) envia o datagrama UDP que lhe é passado como argumento; int getlocalport() retorna o porto local associado ao socket; 12

Comunicação Sem Conexão em Java: Exemplo import java.net.*; (1/2) public class EchoClient { public static void main(string[] args) throws IOException{ if (args.length!= 2) { System.out.println("Usage: java Echo <hostname> <string to return; } // send request DatagramSocket socket = new DatagramSocket(); byte[] sbuf = args[1].getbytes(); InetAddress address = InetAddress.getByName(args[0]); DatagramPacket packet = new DatagramPacket(sbuf, sbuf.length, address, 4445); socket.send(packet); 13 Comunicação Sem Conexão em Java: Exemplo (2/2) // get response byte[] rbuf = new byte[sbuf.length]; packet = new DatagramPacket(rbuf, rbuf.length); socket.receive(packet); // display response String received = new String(packet.getData()); System.out.println("Echoed Message: " + received); } } socket.close(); 14