programação distribuída em java aula 03. 2 na aula passada vimos: i/o streams filtros readers and...

Post on 07-Apr-2016

225 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

4

Na aula de hoje veremos:

• Sockets

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

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

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

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

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

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

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

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.

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

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);}

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);}

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);}

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);}

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()

DayTime.java and Echo.java 19

Socket

Métodos básicos

public InputStream getInputStream()public OutputStream getOutputStream()

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

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

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

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

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

SingleFileHTTPServer.java 25

Cliente A

Cliente B

Cliente C

Cliente D

ServerSocket

Aplicação Servidora

Socket

Socket

Socket

Socket

Socket

Socket

Socket

Socket

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

27

Na próxima aula veremos:

• Suporte Java para rede

• Pacote java.net

top related