Você está na página 1de 9

Programa

Sockets
Programa
o com Sockets

Conceitos bsicos

Programao
Programaocom
com sockets
sockets (em
(emJava)
Java)

Prof. Dr. Julio Arakaki


Depto. Cincia da Computao

PUCSP - Depto. Cincia da


Computao

Programa
Sockets
Programa
o com Sockets

Conceitos bsicos

Comunicao
Comunicaoentre
entre processos
processos//aplicaes
aplicaes
- Sockets um dos mecanismos mais utilizados
- Java oferece modos de utilizao:
. TCP (Transmission Control Protocol) orientado a
conexo
. UDP (User Datagram Protocol) orientado a datagrama
. Entre outros

Funcionam sobre o protocolo IP (Internet Protocol)

PUCSP - Depto. Cincia da


Computao

Programa
Sockets
Programa
o com Sockets

Conceitos bsicos

Principais
Principaisprotocolos
protocolos(Rede/Internet)
(Rede/Internet)
Camadas
HTTP

FTP

DNS

RPC

...

Aplicao
Usurios
SOs

TCP

UDP

ICMP

Transporte

IGMP

IP

Rede

Enlace

Hardware

PUCSP - Depto. Cincia da


Computao

Programa
Sockets
Programa
o com Sockets

Conceitos bsicos

Identificao
Identificaona
na rede
rede

porta
20348
porta
20345

TCP

protocolo = 6

porta
10340
porta
15398

porta
6970

UDP
ssh.cin.ufpe.br
150.161.2.106
procololo = 6
porta = 22

protocolo = 17

Internet
host-0-13.re.apartnet.br.inter.net
200.199.75.13

www.uol.com.br
200.221.8.18
procololo = 6
porta = 80

www.bbc.co.uk
212.58.224.61
protocolo = 17
porta = 44585
PUCSP - Depto. Cincia da
Computao

servidor DNS
200.185.56.49
protocol = 17
porta = 53
4

Programa
Sockets
Programa
o com Sockets

Conceitos bsicos

Programao
Programao(em
(em Rede/Internet)
Rede/Internet)
Sockets
envia/recebe (send/receive)
Caracterstica: eficincia
RPC (Remote Procedure Call)
Chamada remota de procedimento
Caracterstica: transparncia e facilidade de programao
Objetos distribudos
Caractersticas: transparncia, facilidade e todos os benefcios
da programao orientada a objetos, execuo mais lenta
Exemplos: DCOM, CORBA, Java RMI, EJB, Servlets,

Frameworks (Struts, Spring, ...), Web Services, etc.

PUCSP - Depto. Cincia da


Computao

Programa
Sockets
Programa
o com Sockets

Conceitos bsicos

Sockets
Sockets BSD
BSDUnix
Unix
Interface padro para comunicao entre processos em
redes TCP/IP

Implementao no SO: Unix de Berkeley

A maioria dos SOs implementam os sockets

Programar com sockets pode ser visto como:

Desenvolver um protocolo de Comunica


Comunicao

PUCSP - Depto. Cincia da


Computao

Programa
Sockets
Programa
o com Sockets

Conceitos bsicos

Principais
Principaistipos
tiposde
desockets
sockets
Servio com conexo
Implementa um stream de dados (SOCK_STREAM)
Protocolo TCP (tipicamente)
Servio sem conexo
Implementa um servio de datagramas (SOCK_DGRAM)
Protocolo UDP (tipicamente)
Acessa diretamente a camada de rede (SOCK_RAW)
Servio de baixo nvel
Protocolo IP (tipicamente)

PUCSP - Depto. Cincia da


Computao

Programa
Sockets
Programa
o com Sockets

Conceitos bsicos

Principais
Principaisfunes
funesda
da API
API de
de Sockets
Sockets

socket
connect
write
read
close
bind
listen

Cria um novo descritor para comunicao


Iniciar conexo com servidor
Escreve dados em uma conexo
L dados de uma conexo
Fecha a conexo
Atribui um endereo IP e uma porta a um socket

Coloca o socket em modo passivo, para escutar


portas
Bloqueia o servidor at chegada de requisio de
accept
conexo
recvfrom Recebe um datagrama e guarda o endereo do
emissor
Envia um datagrama especificando o endereo
sendto
PUCSP - Depto. Cincia da
Computao

Programa
Sockets
Programa
o com Sockets

Conceitos bsicos

Servio
Serviocom
com conexo
conexo(TCP)
(TCP)
Server
socket ()
bind ()

Client

listen ()

socket ()
accept ()
blocked

connect ()

Conexo
Solicitao

write ()

read ()
write ()

Resposta

read ()

close ()

close ()

PUCSP - Depto. Cincia da


Computao

Programa
Sockets
Programa
o com Sockets

Conceitos bsicos

Servio
Serviosem
sem conexo
conexo(UDP)
(UDP)
Server

Baseado em troca de mensagens (datagrama):

socket ()

[sender.maq1, receiver.maq2, content: mensagem]

bind ()

Client

recvfrom ()

socket ()

blocked

Solicitao

sendto ()
close ()

PUCSP - Depto. Cincia da


Computao

sendto ()

Resposta

recvfrom ()
close ()
10

Programa
Sockets
Programa
o com Sockets

Conceitos bsicos

Servidor
Servidor (estrutura
(estrutura tpica)
tpica)

PUCSP - Depto. Cincia da


Computao

11

Programa
Sockets
Programa
o com Sockets

Conceitos bsicos

Codificao
Codificao
(valores/significado/utilizao)
de
Codificaode
deportas
portas
Codificao
(valores/significado/utilizao)
deportas
portas
1 - 255

reservadas para servios padro


portas bem conhecidas

256 - 1023

reservado para servios Unix

1 - 1023

Somente podem ser usadas


por usurios privilegiados
(super-usurio)

1024 - 4999

Usadas por processos de


sistema e de usurio

5000 -

Usadas somente por processos


de usurio

PUCSP - Depto. Cincia da


Computao

12

Programa
Sockets
Programa
o com Sockets

Conceitos bsicos

Sockets
Socketsem
em Java
Java

Em Java, algumas chamadas (de funes) so automticas

Exemplos:
Socket: equivalente a socket e bind
ServerSocket: equivalente a socket,
socket bind e listen

Sockets so implementados no pacote java.net

O envio e a recepo dos dados so realizados atravs de


classes do pacote java.io de maneira semelhante escrita e
leitura em arquivos
DataInputStream,
DataInputStream DataOutputStream,
DataOutputStream etc.

PUCSP - Depto. Cincia da


Computao

13

Programa
Sockets
Programa
o com Sockets

Conceitos bsicos

Servidor
Servidor TCP
TCP
...
public static void main(String[] args)
{
try {
ServerSocket s = new ServerSocket(9999);
ServerSocket
String str;
while (true) {
Socket c = s.accept
accept();
InputStream i = c.getInputStream();
OutputStream o = c.getOutputStream();
do {
byte[] line = new byte[100];
i.read
read(line);
o.write
write(line);
str = new String(line);
} while ( !str.trim().equals("bye") );
c.close
close();
}
}
catch (Exception err){
System.err.println(err);
...
PUCSP - Depto. Cincia da
Computao

14

Programa
Sockets
Programa
o com Sockets

Conceitos bsicos

Cliente
Cliente TCP
TCP

public static void main(String[] args)


{
try {
Socket s = new Socket("127.0.0.1",
9999);
Socket
InputStream i = s.getInputStream();
OutputStream o = s.getOutputStream();
String str;
do {
byte[] line = new byte[100];
System.in.read(line);
o.write
write(line);
i.read
read(line);
str = new String(line);
System.out.println(str.trim());
} while ( !str.trim().equals("bye") );
close();
s.close
}
catch (Exception err) {
System.err.println(err);

PUCSP - Depto. Cincia da


Computao

15

Programa
Sockets
Programa
o com Sockets

Conceitos bsicos

Servidor
Servidor UDP
UDP
import java.net.*;
import java.util.*;
class ServidorUDP {
public static void main( String args[] ) throws Exception {
DatagramSocket socket = new DatagramSocket(7);
DatagramPacket packet = new DatagramPacket(new byte[512],512);
while ( true ) {
socket.receive( packet );
System.out.println( ""+new Date()+""+packet.getAddress()+
":"+packet.getPort()+" mensagem = "+
new String(packet.getData(),0,packet.getLength()) );
socket.send( packet );
}
}
}

PUCSP - Depto. Cincia da


Computao

16

Programa
Sockets
Programa
o com Sockets

Conceitos bsicos

Cliente
Cliente UDP
UDP
import java.net.*;
import java.util.*;
class ClienteUDP {
public static void main( String args[] ) throws Exception {
DatagramSocket socket = new DatagramSocket();
socket.setSoTimeout( 5000 );
String mens = "12314315145125231523535";
byte[] buffer = mens.getBytes();
DatagramPacket packet = new DatagramPacket(
buffer,buffer.length,InetAddress.getByName("localhost"),7);
socket.send( packet );
Date timeSent = new Date();
socket.receive( packet );
Date timeReceived = new Date();
System.out.println( ""+
(timeReceived.getTime()-timeSent.getTime())+" ms "+
new String(packet.getData(),0,packet.getLength()) );
}
}

PUCSP - Depto. Cincia da


Computao

17

Você também pode gostar