programação com “sockets”jarakaki/lp4/programacaosockets.pdf · • a programação de...

24
© Julio Arakaki PUC-SP Sockets 1 LP4 Programação com “Sockets” LP4 Ciência da Computação PUC-SP

Upload: vuongliem

Post on 09-Nov-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

© Julio Arakaki

PUC-SP

Sockets

1

LP4

Programação com “Sockets”

LP4

Ciência da Computação

PUC-SP

© Julio Arakaki

PUC-SP

Sockets

2

LP4

• Comunicação entre processos

• Nível mais baixo

• É um tipo particular de modelo de programação em redes utilizado em várias linguagens como: C, C++ e Java

• São estruturas que permitem a interconexão de diferentes elementos (software)

© Julio Arakaki

PUC-SP

Sockets

3

LP4

• Semelhante a soquete elétrico/telefônico

• Permite conexão na mesma máquina ou em máquinas diferentes

© Julio Arakaki

PUC-SP

Sockets

4

LP4

• A programação de acessos à rede passa a ter uma interface similar a do sistema de arquivos do Unix

• BSD UNIX, Univ. Calif. Berkeley

• Baseado no modelo de fluxos de bytes (streams)

• Um socket utiliza dois fluxos: um fluxo de entrada e um de saída

© Julio Arakaki

PUC-SP

Sockets

5

LP4

• Um processo envia dados a outro escrevendo no fluxo de saída associado com um socket

• Um processo recebe dados escritos por outro processo lendo de um fluxo de entrada associado com um socket

© Julio Arakaki

PUC-SP

Sockets

6

LP4

Alguns protocolos (redes/internet)

© Julio Arakaki

PUC-SP

Sockets

7

LP4

Identificação na rede

© Julio Arakaki

PUC-SP

Sockets

8

LP4

• Pares de processo/thread comunicam-se através de pares

de sockets

• Cada socket é definido por um endereço IP associado a um

número identificador de porta

© Julio Arakaki

PUC-SP

Sockets

9

LP4

• Com conexão (TCP): uma conexão lógica é explicitamente

estabelecida entre dois processos que se comunicam. A

camada de transporte se encarrega de transferir a seqüência

de forma correta e confiável. Garantia de entrega.

• Sem conexão (UDP): as mensagens de tamanho fixo

(datagramas) são transmitidas individualmente para

destinações especificadas. Sem garantia de entrega.

© Julio Arakaki

PUC-SP

Sockets

10

LP4

TCP

UDP

© Julio Arakaki

PUC-SP

Sockets

11

LP4

TCP/IP

• Protocolo: conjunto de regras que determina como oselementos se comunicam

• Software que gerencia a comunicação na internet seguindoum modelo de comunicação conhecido como TCP/IP

• O IP (Internet Protocol ) determina o formato da informaçãoa ser transmitida

• O TCP (Transmission Control Protocol ) direciona como as mensagens são montadas e manipula a perda de informações

© Julio Arakaki

PUC-SP

Sockets

12

LP4

Seqüêcia para comunicação

FTP HTTP

POP

23 110 80

Server

Web

Browser

Client

http://my.server.it

my.server.it

© Julio Arakaki

PUC-SP

Sockets

13

LP4

Portas

• São números de 16 bits (0-65535)

• Portas abaixo de 1024 são reservadas para serviços pré-definidos e não

devem ser utilizadas, a não ser para comunicar com um destes

serviços

• Clientes e servidores devem utilizar a mesma porta para a

comunicação

© Julio Arakaki

PUC-SP

Sockets

14

LP4

14

Portas TCP Padrões

• Valores abaixo de 1024

21 FTP

23 Telnet

80 HTTP

110 POP3

119 NNTP

© Julio Arakaki

PUC-SP

Sockets

15

LP4

Principais Funções da API de “Sockets”

© Julio Arakaki

PUC-SP

Sockets

16

LP4

Conexão TCP em Java

• A classe Socket é utilizada para manipular as conexões TCP em

Java

• A classe ServerSocket é utilizado para estabelecer uma conexão

© Julio Arakaki

PUC-SP

Sockets

17

LP4

17

Conectando para um Host Remoto

Socket s = new Socket(“my.host.it”, 1234);

© Julio Arakaki

PUC-SP

Sockets

18

LP4

© Julio Arakaki

PUC-SP

Sockets

19

LP4

connect()

Conecta-se ao servidor

socket()

Cria o socket

send() / recv()

Envia e recebe dados

closesocket()

Fecha a conexão

Cliente

bind()

Atribui um nome ao Socket

listen()

Aguarda conexões de clientes

accept()

Aceita a conexão

socket( )

Cria o Socket

Aguardando

Servidor

closesocket()

Fecha a conexão

send() / recv()

Envia e recebe dados

Serviço com conexão (TCP)

© Julio Arakaki

PUC-SP

Sockets

20

LP4

Serviço com conexão (TCP)

© Julio Arakaki

PUC-SP

Sockets

21

LP4

21

Aguarda pedido

Trata pedido

Início

Responderesposta

pedido

Servidor TCP Iterativo e Sequencial

© Julio Arakaki

PUC-SP

Sockets

22

LP4

22

Servidor TCP Iterativo e

Concorrente Início

Aguarda pedido

Cria processo (thread) para

tratamento e retorna

Trata pedido

Responde

Fim

pedido

resp.

Trata pedido

Responde

Fim

resp.

Trata pedido

Responde

Fim

resp.

© Julio Arakaki

PUC-SP

Sockets

23

LP4

Serviço sem conexão (UDP)

© Julio Arakaki

PUC-SP

Sockets

24

LP4

Serviço sem conexão (UDP)