Mini-Curso de Sockets no Unipê

117
1 Sockets em Java E lenils on Vieira Embaixador de Campus da Sun Universidade Federal da Paraíba blogs.sun.com/elenilsonvieira [email protected] 1

description

 

Transcript of Mini-Curso de Sockets no Unipê

Page 1: Mini-Curso de Sockets no Unipê

1

Sockets em Java

Elenilson VieiraEmbaixador de Campus da SunUniversidade Federal da Paraíbablogs.sun.com/[email protected]

1

Page 2: Mini-Curso de Sockets no Unipê

22

Page 3: Mini-Curso de Sockets no Unipê

3

Agenda

3

1 – Motivação2 – Definição3 – Protocolos4 – Modelo Cliente-Servidor5 – Formas de Comunicação6 – Estados de um Socket7 – API Socket - Primitivas8 – Cliente em Java9 – Servidor em Java10 – Servidor Multi-thread11 – Enviando Objetos12 – DatagramSocket13 – Observações14 – RaceFX

Page 4: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 4

Footnote position, 12 pts.

Page 5: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 5

Quem conhece Programação Distribuída?

Page 6: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 6

Footnote position, 12 pts.

Page 7: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 7

Por que aprender a programar com sockets?

• Programar para Internet• Programar para rede local• Comunicação inter-processos• A interface socket tornou-se quase tão popular

entre os programadores quanto a própria Internet.

Page 8: Mini-Curso de Sockets no Unipê

8

Agenda

8

1 – Motivação2 – Definição3 – Protocolos4 – Modelo Cliente-Servidor5 – Formas de Comunicação6 – Estados de um Socket7 – API Socket - Primitivas8 – Cliente em Java9 – Servidor em Java10 – Servidor Multi-thread11 – Enviando Objetos12 – DatagramSocket13 – Observações14 – RaceFX

Page 9: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 9

Definição

Page 10: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 10

Page 11: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 11

O que é um Socket?

• Representação interna do sistema operacional para um ponto de comunicação

• Cada endpoint é representado por um par (endereço_ip,porta)

Page 12: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 12

O que é Socket?• Uma porta serve para identificar processos

comunicantes • A interface padronizada de soquetes surgiu

originalmente no sistema operacional Unix BSD (Berkeley Software Distribution); por isso, eles são muitas vezes chamados de Berkeley Sockets.

Page 13: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 13

Pilha de rede do sitema operacional

Processo #m

Porta #m

Processo #1

Porta #1

Host#1

Pilha de rede do Sistema operacional

Processo #k

Porta #k

Processo #1

Porta #1

Host #n

NetworkEndereço IP#1 Endereço IP #n

Page 14: Mini-Curso de Sockets no Unipê

14

Agenda

14

1 – Motivação2 – Definição3 – Protocolos4 – Modelo Cliente-Servidor5 – Formas de Comunicação6 – Estados de um Socket7 – API Socket - Primitivas8 – Cliente em Java9 – Servidor em Java10 – Servidor Multi-thread11 – Enviando Objetos12 – DatagramSocket13 – Observações14 – RaceFX

Page 15: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 15

Protocolos

Page 16: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 16

O que é um Protocolo?

Page 17: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 17

Protocolos• São regras para a comunicação entre duas

aplicações, computadores, dispositivos, etc.• Em programação, protocolos são funções que

implementam serviços de comunicação

Page 18: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 18

oi

envie os dados

soma 2 2

4

Multi 2 4

8

tchau

Page 19: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 19

Protocolos• São a interface de um módulo ou de uma camada

de rede• Exemplo : TCP/IP, Telnet, HTTP, SMTP, FTP,

NNTP, SNMP, ARP, RARP, BOOTP, ICMP, IGMP, etc.

Page 20: Mini-Curso de Sockets no Unipê

20

Agenda

20

1 – Motivação2 – Definição3 – Protocolos4 – Modelo Cliente-Servidor5 – Formas de Comunicação6 – Estados de um Socket7 – API Socket - Primitivas8 – Cliente em Java9 – Servidor em Java10 – Servidor Multi-thread11 – Enviando Objetos12 – DatagramSocket13 – Observações14 – RaceFX

Page 21: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 21

Modelo Cliente-Servidor

Page 22: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 22

O que é o Modelo Cliente-Servidor?

Page 23: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 23

Modelo Cliente-Servidor• Sockets se baseia no modelo cliente/servidor

> O cliente é um processo ou aplicação que requisita um serviço oferecido por um servidor.

> O servidor aceita as requisições dos clientes, realiza o processamento delas

Page 24: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 24

Modelo Cliente-Servidor• Interação

> paradigma requisição-resposta

Footnote position, 12 pts.

Page 25: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 25

Modelo Cliente-Servidor

Footnote position, 12 pts.

Page 26: Mini-Curso de Sockets no Unipê

26

Agenda

26

1 – Motivação2 – Definição3 – Protocolos4 – Modelo Cliente-Servidor5 – Formas de Comunicação6 – Estados de um Socket7 – API Socket - Primitivas8 – Cliente em Java9 – Servidor em Java10 – Servidor Multi-thread11 – Enviando Objetos12 – DatagramSocket13 – Observações14 – RaceFX

Page 27: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 27

Footnote position, 12 pts.

Formas de Comunicação

Page 28: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 28

Dois tipos de comunicação• Com conexão• Sem conexão

Page 29: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 29

Sem Conexão• Cliente e servidor não precisam estabelecer

nenhuma conexão, isto é, a qualquer momento um processo pode enviar ou receber dados

• Exemplos desse tipo de comunicação: > Socket UDP

Footnote position, 12 pts.

Page 30: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 30

Sem Conexão

Page 31: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 31

Com Conexão• Deve ser estabelecida uma conexão para depois

poderem enviar e receber dados. • Exemplo:

> Socket TCP

Page 32: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 32

Com Conexão

Page 33: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 33

Page 34: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 34

Com Conexão

Page 35: Mini-Curso de Sockets no Unipê

35

Agenda

35

1 – Motivação2 – Definição3 – Protocolos4 – Modelo Cliente-Servidor5 – Formas de Comunicação6 – Estados de um Socket7 – API Socket - Primitivas8 – Cliente em Java9 – Servidor em Java10 – Servidor Multi-thread11 – Enviando Objetos12 – DatagramSocket13 – Observações14 – RaceFX

Page 36: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 36

Footnote position, 12 pts.

Estados de um Socket

Page 37: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 37

Estados de um Socket• Socket Passivo: espera por uma conexão

> Usado por Servidores> Closed listen established> Obs. O socket TCP também possui outros estados

Footnote position, 12 pts.

Page 38: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 38

Estados de um Socket• Socket Ativo: Inicia uma conexão

> Usado pelos Clientes> Closed Established

Footnote position, 12 pts.

Page 39: Mini-Curso de Sockets no Unipê

39

Agenda

39

1 – Motivação2 – Definição3 – Protocolos4 – Modelo Cliente-Servidor5 – Formas de Comunicação6 – Estados de um Socket7 – API Socket - Primitivas8 – Cliente em Java9 – Servidor em Java10 – Servidor Multi-thread11 – Enviando Objetos12 – DatagramSocket13 – Observações14 – RaceFX

Page 40: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 40

Footnote position, 12 pts.

API Sockets - Primitivas

Page 41: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 41

PrimitivasFunção Descrição

Socket Cria um novo ponto de comunicação

Bind Associa o enrederço IP e a porta ao endpoint local do socket

Listen Indica que o socket esta pronto para aceitar requisição de conexões

Accept Bloqueia o processo até a chegada de uma requisição de conexão

Connect Estabelece uma conexão com um endpoint remoto

Read Ler dados de um socket conectado (TCP)

Recvfrom Ler dados de um socket não conectado (UDP)

Write Envia dados ao endpoint remoto conectado (TCP)

Sendto Envia dados ao endpoint remoto informado no parâmetro (UDP)

Close Fecha o socket

Page 42: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 42

Classe Descrição

Socket Construtor Socket(InetAddress,int), cria o socket e realiza o bind e connect

Construtor Socket(String,int), cria o socket e realiza o bind e connect

DatagramSocket Construtor DatagramSocket(int) cria o socket e realiza o bind

ServerSocket Construtor ServerSocket(int), cria o socket e realiza o bind e listen

Método close Comum às três classes. Realiza o close, fecha o socket e libera a porta.

API Socket

Page 43: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 43

E o Read e o Write?• Em Java você precisa usar extensões das classes

abstratas InputStream e OutputStream.• Os métodos getInputStream e getOutputStream de

Socket e ServerSocket retornam um InputStream e output stream

Footnote position, 12 pts.

Page 44: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 44

E o Read e o Write?• A escolha do InputStream/OutputStream depende

da aplicação, consulte a API.• Pode-se usar diretamente objetos

InputStream/OutputStream com as classes Scanner/PrintWriter respectivamente para ler e escrever nos sockets

Page 45: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 45

Hora de Programar!!!

Page 46: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 46

Interagir com Socket de Java

Page 47: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 47

Interagir com Socket de Java

Page 48: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 48

Comunicação com Conexão

processo

TCPsocket

Controlado pelo

desenvolvedor

da aplicação

Controlado pelo

sistema

operacional

processo

TCPsocket

internet

cliente servidorsocket( )bind( )connect( )

socket( )bind( )listen( )

accept( )send( )recv( )

close( ) close( )

recv( ) send( )

TCP conn. request

TCP ACK

Page 49: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 49

Comunicação sem Conexão

processo

UDPsocket

Controlado pelo

desenvolvedor

da aplicação

Controlado pelo

sistema

operacional

processo

UDPsocket

internet

cliente servidorsocket( )bind( )

socket( )bind( )

send() recv( )

close( ) close( )

recv( ) send( )

Page 50: Mini-Curso de Sockets no Unipê

50

Agenda

50

1 – Motivação2 – Definição3 – Protocolos4 – Modelo Cliente-Servidor5 – Formas de Comunicação6 – Estados de um Socket7 – API Socket - Primitivas8 – Cliente em Java9 – Servidor em Java10 – Servidor Multi-thread11 – Enviando Objetos12 – DatagramSocket13 – Observações14 – RaceFX

Page 51: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 51

Footnote position, 12 pts.

Cliente em Java

Page 52: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 52

Cliente em Java

Page 53: Mini-Curso de Sockets no Unipê

53

Agenda

53

1 – Motivação2 – Definição3 – Protocolos4 – Modelo Cliente-Servidor5 – Formas de Comunicação6 – Estados de um Socket7 – API Socket - Primitivas8 – Cliente em Java9 – Servidor em Java10 – Servidor Multi-thread11 – Enviando Objetos12 – DatagramSocket13 – Observações14 – RaceFX

Page 54: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 54

Servidor em Java

Page 55: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 55

Servidor em Java

Page 56: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 56

Hora de Programar!!!

Page 57: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 57

Implementar uma calculadora utilizando Sockets

Page 58: Mini-Curso de Sockets no Unipê
Page 59: Mini-Curso de Sockets no Unipê
Page 60: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 60

Hora de Programar!!!

Page 61: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 61

• Nos exemplos anteriores, o servidor é capaz de responder apenas a uma requisição por vez

• A primitiva accept é bloqueante! Ela bloqueia o processo até que seja recebida uma requisição

• Precisamos atender a vários clientes

Footnote position, 12 pts.

Page 62: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 62

Servidor Monothread

Page 63: Mini-Curso de Sockets no Unipê

63

Agenda

63

1 – Motivação2 – Definição3 – Protocolos4 – Modelo Cliente-Servidor5 – Formas de Comunicação6 – Estados de um Socket7 – API Socket - Primitivas8 – Cliente em Java9 – Servidor em Java10 – Servidor Multi-thread11 – Enviando Objetos12 – DatagramSocket13 – Observações14 – RaceFX

Page 64: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 64

Servidor Multithread

Page 65: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 65

Relembrando Criação de Threads• Implementando a Classe Runnable

Footnote position, 12 pts.

Page 66: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 66

Relembrando Criação de Threads• Extendendo a Classe Thread

Footnote position, 12 pts.

Page 67: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 67

Servidor Multithread• Podemos criar uma classe para o tratamento da

requisição implementando a interface Runnable• Então basta criarmos uma thread a cada chamada

do accept

Page 68: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 68

Servidor Multithread

Page 69: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 69

Servidor Multithread

Page 70: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 70

Falamos de servidor multithreaded, mas e quanto ao cliente?

Page 71: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 71

Servidor Multithread

Page 72: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 72

Hora de Programar!!!

Page 73: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 73

Implementar o servidor Multithread

Page 74: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 74

Como ficaria a calculadora MultiThread?

Page 75: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 75

Hora de Programar!!!

Page 76: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 76

Implementar a calculadora Multithread

Page 77: Mini-Curso de Sockets no Unipê

77

Agenda

77

1 – Motivação2 – Definição3 – Protocolos4 – Modelo Cliente-Servidor5 – Formas de Comunicação6 – Estados de um Socket7 – API Socket - Primitivas8 – Cliente em Java9 – Servidor em Java10 – Servidor Multi-thread11 – Enviando Objetos12 – DatagramSocket13 – Observações14 – RaceFX

Page 78: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 78

Enviando Objetos• Utilizamos as classes

> ObjectOutputStream– writeObject(objeto)

> ObjectInputStream– readObject()

• O objeto precisa implemente Serializable

Page 79: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 79

Page 80: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 80

Page 81: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 81

Page 82: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 82

Hora de Programar!!!

Page 83: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 83

Implementar o envio de Objetos

Page 84: Mini-Curso de Sockets no Unipê

84

Agenda

84

1 – Motivação2 – Definição3 – Protocolos4 – Modelo Cliente-Servidor5 – Formas de Comunicação6 – Estados de um Socket7 – API Socket - Primitivas8 – Cliente em Java9 – Servidor em Java10 – Servidor Multi-thread11 – Enviando Objetos12 – DatagramSocket13 – Observações14 – RaceFX

Page 85: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 85

DatagramSocket• Podemos enviar e receber pacotes sem a

necessidade de uma conexão• São raros, mas alguns problemas podem acontecer

> Pacotes podem não chegar> Pacotes podem chegar fora de ordem> Pacotes podem chegar duplicados

Page 86: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 86

DatagramSocket• Utilizamos essa classe para criar o Socket

> DatagramSocket(porta)

• Utilizamos essa classe para criar o pacote> DatagramPacket(dados, tamanho_dos_dados)

Page 87: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 87

No Servidor• Cria um DatagramSocket e indica em qual porta

estará a escuta> DatagramSocket ds = new DatagramSocket(5000);

• Cria um DatagramPacket e chama o método receive do socket

Page 88: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 88

No Servidor

Page 89: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 89

No Cliente

• Utilizamos essa classe para criar o Socket> DatagramSocket()

• Utilizamos essa classe para criar o pacote> DatagramPacket(dados, tamanho_dos_dados,

endereco_servidor, porta_servidor)

Page 90: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 90

No Cliente

Page 91: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 91

No Cliente

Page 92: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 92

No Cliente

Page 93: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 93

Hora de Programar!!!

Page 94: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 94

Implementar o envio de dados com DatagramSocket

Page 95: Mini-Curso de Sockets no Unipê

95

Agenda

95

1 – Motivação2 – Definição3 – Protocolos4 – Modelo Cliente-Servidor5 – Formas de Comunicação6 – Estados de um Socket7 – API Socket - Primitivas8 – Cliente em Java9 – Servidor em Java10 – Servidor Multi-thread11 – Enviando Objetos12 – DatagramSocket13 – Observações14 – RaceFX

Page 96: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 96

Observações

Page 97: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 97

Observações

• Muitas coisas podem dar errado na comunicação em rede> Não é possível resolver o nome> O host não pode ser encontrado - offline> A conexão pode ser encerrada abruptamente> O servidor pode demorar demais para responder> Inundação de requisições – quantas threads criar?

Page 98: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 98

Observações• Fique atento!

> Trate as exceções> Defina um timeout com o objeto socket:

– Socket s = new Socket(“www.google.com”,80);– s.setSoTimeout(60000); //às próximas requisições serão aplicadas um

timeout

Footnote position, 12 pts.

Page 99: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 99

Como eu faria para meu servidor executar então alguma operação como uma requisição do cliente?

• Vocês observaram o comando “Tchau” ?• Lembram do “protocolo”?

> Você define as regras para interpretar os dados na sua aplicação!

Page 100: Mini-Curso de Sockets no Unipê

100

Agenda

100

1 – Motivação2 – Definição3 – Protocolos4 – Modelo Cliente-Servidor5 – Formas de Comunicação6 – Estados de um Socket7 – API Socket - Primitivas8 – Cliente em Java9 – Servidor em Java10 – Servidor Multi-thread11 – Enviando Objetos12 – DatagramSocket13 – Observações14 – RaceFX

Page 101: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 101

RaceFX

Page 102: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 102

RaceFX• Jogo desenvolvidor em JavaFX por Raphael

Marques (raphaelmarques.wordpress.com/)

• Utiliza Sockets para a comunicação entre duas máquinas

Footnote position, 12 pts.

Page 103: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 103

Hora de Programar!!!

Page 104: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 104

RaceFX – Trabalho Final do Mini-Curso• Implementar a comunicação entre o cliente e o

servidor> Classes: Server e Client

• Objetivo> Criar ServerSocket e Socket ou DatagramSocket> Definir Protocolo> Enviar e Receber Dados

Page 105: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 105

Classe Client.java

Page 106: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 106

Construtor

Page 107: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 107

RaceFX – Trabalho Final do Mini-Curso

Page 108: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 108

Método send(SenderCar)

Page 109: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 109

Classe Server.java

Page 110: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 110

Construtor

Page 111: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 111

Page 112: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 112

Método send(SenderCar)

Page 113: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 113

E o que eu tenho que enviar?

Page 114: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 114

Classe SenderCar.java

Page 115: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 115

Page 116: Mini-Curso de Sockets no Unipê

Sun Confidential: Internal Only 116

Footnote position, 12 pts.

Perguntas

Page 117: Mini-Curso de Sockets no Unipê

117

Sockets em Java

Elenilson VieiraEmbaixador de Campus da SunUniversidade Federal da Paraíbablogs.sun.com/[email protected]

117