Escolar Documentos
Profissional Documentos
Cultura Documentos
Sockets
Programa
o com Sockets
Conceitos bsicos
Programao
Programaocom
com sockets
sockets (em
(emJava)
Java)
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
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
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,
Programa
Sockets
Programa
o com Sockets
Conceitos bsicos
Sockets
Sockets BSD
BSDUnix
Unix
Interface padro para comunicao entre processos em
redes TCP/IP
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)
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
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 ()
Programa
Sockets
Programa
o com Sockets
Conceitos bsicos
Servio
Serviosem
sem conexo
conexo(UDP)
(UDP)
Server
socket ()
bind ()
Client
recvfrom ()
socket ()
blocked
Solicitao
sendto ()
close ()
sendto ()
Resposta
recvfrom ()
close ()
10
Programa
Sockets
Programa
o com Sockets
Conceitos bsicos
Servidor
Servidor (estrutura
(estrutura tpica)
tpica)
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
256 - 1023
1 - 1023
1024 - 4999
5000 -
12
Programa
Sockets
Programa
o com Sockets
Conceitos bsicos
Sockets
Socketsem
em Java
Java
Exemplos:
Socket: equivalente a socket e bind
ServerSocket: equivalente a socket,
socket bind e listen
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
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 );
}
}
}
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()) );
}
}
17