programação distribuída em java aula 03. 2 na aula passada vimos: i/o streams filtros readers and...
TRANSCRIPT
![Page 1: Programação Distribuída em Java Aula 03. 2 Na aula passada vimos: I/O Streams Filtros Readers and Writers](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051223/5706384b1a28abb8238f5985/html5/thumbnails/27.jpg)
27
Na próxima aula veremos:
• Suporte Java para rede
• Pacote java.net