27
Programação Distribuída em Java Aula 03

Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

Embed Size (px)

Citation preview

Page 1: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

Programação Distribuída em Java

Aula 03

Page 2: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

2

Na aula passada vimos:

• I/O

• Streams• Filtros• Readers and Writers

Page 3: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

3

O que você deve ter fixado:

• Tratamento básico de entrada e saída

• Encadeamento de filtros

• Manipulação de streams

Page 4: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

4

Na aula de hoje veremos:

• Sockets

Page 5: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

5

Socket

• Abstração que permite ao programador tratar uma conexão de rede como um stream de dados.

• Libera do programador dos detalhes de baixo nível da rede

• Um socket conecta dois hosts

Page 6: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

6

Socket

• Um Socket é uma conexão

• Socket permite tratar a conexão como I/O

• Ler ou enviar dados em uma rede deve ser tão simples como fazê-lo para um arquivo local

Page 7: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

7

Portas lógicas

• Abstrações na memória do computador

• Não têm características físicas

• Estão registradas em cada pacote de informação

Page 8: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

LowPortScanner.java 8

Portas notáveis

• De 1 a 1023• Breve lista

– 07 echo– 13 daytime– 21 FTP – 23 Telnet – 25 SMTP– 80 HTTP– 110 POP3– 1099 RMI Registry

• Lista detalhada em:http://pt.wikipedia.org/wiki/Lista_de_portas_de_protocolos

Page 9: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

9

Operações Básicas dos Sockets

• Conectar a máquinas remotas• Enviar dados• Receber dados• Encerrar conexão• Conectar-se a portas lógicas• Aguardar chegada de dados• Aceitar conexão de máquinas remotas

Page 10: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

10

Sockets

• Clientes e servidores usam sockets

• Os três últimas operações citadas são próprias dos servidores

• São implementadas apenas por ServerSockets

Page 11: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

DaytimeClient.java 11

Ciclo de vida de um programa que usa Socket

• Criação do socket• Conexão ao host remoto• Obtenção dos streams de entrada e saída• Troca de informações• Encerramento da conexão

Page 12: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

12

A Classe Socket

• Java.net.Socket é a classe fundamental para operações no lado cliente.

• Outras classes Java que fazem conexão de rede usam Socket implicitamente.

Page 13: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

13

Java.net.Socket

• Possui quatro construtores públicos e dois protegidos

• Cada construtor especifica o host e a porta à qual você deseja se conectar

• Eventualmente o construtor pode indicar uma interface, ou seja, um ponto alternativo de conexão (físico ou virtual) com a máquina atual

Page 14: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

14

public Socket (String host, int port)throws UnknownHostException, IOException

try { Socket s = new Socket (“www.ime.usp.br”, 80); // execução do programa}catch(UnknownHostException e){ System.out.println(e);}catch(IOException e){ System.out.println(e);}

Page 15: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

HighPortScanner.java 15

public Socket ( InetAddress ia , int port )throws UnknownHostException, IOException

try { String host = www.ime.usp.br; InetAddress ia = InetAddress.getByName(host); Socket s = new Socket (ia , 80); // execução do programa}catch(UnknownHostException e){ System.out.println(e);}catch(IOException e){ System.out.println(e);}

Page 16: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

16

public Socket (String host, int port , InetAddress interface, int localPort )

throws UnknownHostException, IOException

try { Socket s = new Socket (“www.ime.usp.br”, 80, interface,

localPort); // execução do programa}catch(UnknownHostException e){ System.out.println(e);}catch(IOException e){ System.out.println(e);}

Page 17: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

17

public Socket (InetAddress ia , int port, InetAddress interface, int localPort )

throws UnknownHostException, IOException

try { String host = www.ime.usp.br; InetAddress ia = InetAddress.getByName(host); Socket s = new Socket (ia , 80, interface, localPort); // execução do programa}catch(UnknownHostException e){ System.out.println(e);}catch(IOException e){ System.out.println(e);}

Page 18: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

SocketInfo.java 18

Socket

Métodos básicos

public InetAddress getInetAddress()public InetAddress getInetAddress()public int getPort()public int getLocalPort()

public InputStream getInputStream()public OutputStream getOutputStream()

Page 19: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

DayTime.java and Echo.java 19

Socket

Métodos básicos

public InputStream getInputStream()public OutputStream getOutputStream()

Page 20: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

20

Socket

• Um socket é fechado quando:– Um ou os dois stream são fechados– O programa termina– Garbage collected

• Recomenda-se o fechamento explícito

• É possível fechar apenas um sentido do stream– public void shutDownInput()– public void shutDownOutput()

Note que fechar a entrada e a saída não fecha o socket

Page 21: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

LocalPortScanner.java 21

Java.net.ServerSocket

• Pelo lado servidor, para que seja possível a conexão, é necessário um ServerSocket

• Um ServerSocket roda em um servidor e aguarda a chegada de solicitações de conexão

Page 22: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

22

java.net.ServerSocket

• Solicitações de conexão são colocadas em uma fila

• O tamanho default dessa fila é 50

• Em Java é possível alterar o tamanho dessa fila

Page 23: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

RandomPort.java 23

java.net.ServerSocket

• Construtores

– public ServerSocket(int port)– public ServerSocket(int port, int queueLength)trows BindException()

– public ServerSocket(int port, int queueLength, InetAddress bind)

todos lançam IOException

Page 24: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

DaytimeServer.java 24

Java.net.ServerSocket

• ServerSockets aguardam as conexões enquanto Sockets as iniciam

• Servidores usam o mesmo tipo de objeto Socket para o seu lado da comunicação

• A quantidade máxima de conexões é dependente de sistema operacional

Page 25: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

SingleFileHTTPServer.java 25

Cliente A

Cliente B

Cliente C

Cliente D

ServerSocket

Aplicação Servidora

Socket

Socket

Socket

Socket

Socket

Socket

Socket

Socket

Page 26: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

26

O que você precisa saber...

• Características principais dos soquetes• Utilização de portas lógicas• Aquisição e manipulação do stream da

rede• Esquema do ação dos servidores de

soquetes

Page 27: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers

27

Na próxima aula veremos:

• Suporte Java para rede

• Pacote java.net