Sockets e Threads em Java

Documentos relacionados
Resumo das Propriedades de UDP e de TCP

User Datagram Protocol

Sistemas Distribuídos Java Sockets

Programação com Sockets

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

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

PROGRAMAÇÃO COM SOCKETS

Passagem de Mensagens

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

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

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

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

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

Programação com Sockets

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

Programação com sockets (em Java)

Sistemas Distribuídos

Java 2 Standard Edition Fundamentos de

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

Comunicação entre Processos

FUNDAMENTOS DE REDES DE COMPUTADORES Unidade 5 Camada de Transporte e Aplicação. Luiz Leão

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

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

Redes de Computadores e Aplicações

Canais de Comunicação

Sistemas Distribuídos

INF01018 Aula Prática 1 Cliente-Servidor e Multicast

Redes de Computadores

Redes de Computadores

Capítulo 3 Camada de transporte

Testes de Penetração: Explorador de Portas

Aula de Socket. Rafael De Tommaso do Valle

PROTOCOLOS DE COMUNICAÇÃO

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

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

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DO RIO GRANDE DO NORTE DEPARTAMENTO ACADÊMICO DE TECNOLOGIA DA INFORMAÇÃO

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

Capítulo 3 Camada de transporte

Fundamentos de Sistemas Operacionais

Laboratório - Uso do Wireshark para examinar uma captura UDP DNS

Módulo 3 Nível Transporte

Programação de Sockets

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

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

Servidor UDP. Programação Sockets Volnys Bernal. Servidor UDP Resumo das Chamadas UDP. Resumo de Chamadas UDP. Resumo de Chamadas UDP

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

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

Camada de Transporte Protocolos TCP e UDP

Programação de sockets com TCP

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

Redes de Computadores e Telecomunicações - Camada de Transporte

Rede de computadores Protocolos UDP. Professor Carlos Muniz

Sockets com Java Parte I

Introdução às camadas de transporte e de rede

Programação: Sockets em Java

Camada de Aplicação da Arquitetura TCP/IP

Arquitetura de Rede. Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina: Redes de Computadores I

Redes de Computadores. Protocolos TCP/IP

Modelo de Referência TCP/IP

Redes de Computadores. Prof. André Y. Kusumoto

Programação Concorrente com Thread Java. Luiz Affonso Guedes Sistemas Distribuidos

Java RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

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

INF1013 MODELAGEM DE SOFTWARE

Redes de Computadores

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO

Transcrição:

Sockets e Threads em Java U N I V E R S I D A D E T E C N O L Ó G I C A F E D E R A L D O P A R A N Á D E P A R T A M E N T O A C A D Ê M I C O D E E L E T R Ô N I C A P R O F. V I T O R Y A N O

Comunicação em rede em Java A comunicação em rede na linguagem Java é implementada pelo pacote java.net; As classes dessa biblioteca, por sua vez, implementam sockets, que podem ser unicast (para um único destinatário) ou multicast (para um grupo de destinatários). Existem dois modos de utilização de sockets IP: Orientado a conexão (protocolo TCP) Orientado a datagrama (protocolo UDP)

Comunicação em rede em Java Modo orientado a conexão (TCP/IP): Serviços mais confiáveis; Garantia de ordem dos pacotes de dados; Possibilidade de utilização de fluxos de dados; Comportamento do servidor diferente do cliente; Modo mais lento. Modo orientado a datagrama (UDP/IP): Não há garantia de entrega das mensagens; Ordem das mensagens pode ser perdida; Cada mensagem é um pacote que contém o remetente, o destinatário e o conteúdo (datagrama); Muito mais rápido que o modo orientado a conexão.

Sockets Sockets são mecanismos de comunicação entre processos, que podem estar em uma mesma máquina ou em diferentes computadores em uma rede.

Modo orientado a conexão TCP/IP Como funciona: O servidor abre uma porta e fica aguardando conexões; O cliente deve saber previamente o endereço do servidor (IP) ou seu nome (hostname) e a porta; O cliente solicita uma conexão. Se nenhum problema ocorrer, o servidor aceita a conexão, gerando um socket em outra porta qualquer do seu lado, que é o canal de comunicação entre o cliente e o servidor. Em Java, a comunicação através de sockets utiliza duas classes: Socket (soquete de dados) e ServerSocket (soquete do servidor).

ServerSocket Construtor: ServerSocket(int port) cria o socket especificando a porta Alguns métodos importantes: accept() aguarda uma conexão, retornando um objeto da classe Socket, que representa a conexão estabelecida; close() fecha a conexão; isclosed() indica se o socket está fechado; getinetaddress() retorna o endereço do servidor através de um objeto da classe InetAddress.

Socket Construtor: Socket(InetAddress address, int port) cria um socket conectando a um servidor em uma porta especificada; Socket(String host, int port) idem anterior, porém o nome ou endereço do servidor é passado por uma String. Alguns métodos importantes: close() getinetaddress() getinputstream() stream de dados de entrada getoutputstream() stream de dados de saída

Processo orientado a conexão Servidor ServerSocket(p) accept() InputStream/ OutputStream Troca de dados Cliente Socket(s,p) OutputStream/ InputStream

ExemploSocket Exemplo

Processo orientado a conexão O problema da comunicação orientada a conexão é que sempre um dos lados deve ficar aguardando, podendo manter o programa travado; Pode-se resolver esse problema de duas formas: Usando modo de comunicação orientado a datagramas (UDP); Utilizar threads para manter o programa funcionando enquanto aguarda a recepção de dados.

Threads Threads, também chamadas de processos leves, permitem a execução em paralelo de múltiplas atividades em um mesmo processo; Java é a primeira linguagem de programação a incluir o conceito de threads na própria linguagem. Algumas razões para o uso de threads: Maior desempenho em sistemas multiprocessados; Funcionalidade em ambientes gráficos; Simplificação da modelagem em algumas aplicações.

Threads Para implementar threads em Java, pode-se: Utilizar herança, criando uma subclasse da classe Thread; Implementar a interface Runnable. Basicamente, o mais importante nestes casos é a implementação do método public void run() e sua ativação pelo método start() Uma thread pode estar em um entre quatro estados: Nova (new); Executando (run); Suspensa (sleep); Encerrada (stop)

ExemploSocketThread Exemplo

Modo orientado a datagramas (UDP/IP) Sockets UDP/IP são mais rápidos que TCP/IP pois não exigem o estabelecimento de conexão; A comunicação ocorre pelo envio de mensagens, que são formadas por um datagrama, contendo o remetente (sender), destinatário (receiver) e o conteúdo (content); Caso o destinatário não capture a mensagem (não esteja aguardando por ela), a mesma é perdida; Em Java, a comunicação é feita através das classes DatagramSocket e DatagramPacket.

DatagramSocket Construtor: DatagramSocket() cria um socket de datagrama DatagramSocket(int port) cria o socket especificando a porta para receber pacotes Alguns métodos importantes: close() fecha o socket; getlocalport() retorna a porta usada para envio e recepção; receive(datagrampacket p) aguarda recepção de pacote; send(datagrampacket p) envia pacote.

DatagramPacket Construtor: DatagramPacket(byte ibuf[], int ilength) DatagramPacket(byte ibuf[], int ilength, InetAddress iaddr, int iport) Alguns métodos importantes: getaddress() retorna o endereço remoto (de quem recebeu ou para quem vai enviar); getdata() retorna o conteúdo do datagrama; getlength() retorna o tamanho, em bytes, dos dados; getport() retorna a porta remota.