SlideShare uma empresa Scribd logo
Sockets em Java
Leonardo R. Nunes - leonardo@sumersoft.com

1. Introdução
A comunicação entre processos de software tornou-se indispensável nos sistemas atuais. O mecanismo
mais utilizado atualmente para possibilitar comunicação entre aplicações é chamado socket. Neste artigo
será apresentado o suporte que Java oferece para a utilização desse mecanismo de comunicação.
Java oferece os seguintes modos de utilização de sockets: o modo orientado a conexão, que funciona
sobre o protocolo TCP (Transmission Control Protocol, ou protocolo de controle de transmissão), e o modo
orientado a datagrama, que funciona sobre o protocolo UDP (User Datagram Protocol, ou protocolo de
datagrama de usuários). Os dois modos funcionam sobre o protocolo IP (Internet Protocol).
Cada um desses modos tem sua aplicabilidade, e possuem vantagens e desvantagens em sua utilização.
Modo orientado a conexão TCP/IP
•
•

Modo orientado a datagrama UDP/IP

• Serviços não confiáveis:
Serviços confiáveis:
o Mensagens podem ser perdidas;
o Sem perdas de dados na rede;
o Ordem das mensagens não é garantida;
o Garantia de ordem dos pacotes;
Possibilidade de utilização de fluxo de dados • Cada mensagem é um datagrama:
[sender (remetente), receiver (receptor), contents
(DataStreams);
(conteúdo da mensagem)]

Vantagem:
Desvantagens:
• É muito mais rápido que o modo orientado
• É mais lento que o modo orientado a
a conexão;
datagrama;
• Comportamento servidor diferente de
comportamento cliente;

2. Sockets TCP/IP
O processo de comunicação no modo orientado à conexão ocorre da seguinte forma: O servidor
escolhe uma determinada porta (o termo correto seria porto, em inglês port, mas aqui no Brasil o termo
utilizado comumente é porta) e fica aguardando conexões nesta porta. O cliente deve saber previamente
qual a máquina servidora (host) e a porta que o servidor está aguardando conexões. Então o cliente solicita
uma conexão em um host/porta, conforme demonstrado na figura 1.
Figura 1

Se nenhum problema ocorrer, o servidor aceita a conexão gerando um socket em uma porta qualquer
do lado servidor, criando assim um canal de comunicação entre o cliente e o servidor. A figura 2 demonstra
este canal de comunicação.

Figura 2
Tipicamente o comportamento do servidor é ficar em um loop aguardando novas conexões e gerando
sockets para atender as solicitações de clientes.
A seguir serão apresentadas as ações necessárias para implementar comunicação sobre TCP através de
um socket cliente e um socket servidor:

2.1.

Criando um socket cliente:
•

Passo 1 - Abrir a conexão:
import java.io.* ;
// streams
import java.net.* ; // sockets
//Conectar no servidor java.sun.com na porta 80.
Socket client = new Socket(“java.sun.com”, 80);
•

Passo 2 - Obter fluxos (streams) de entrada e saída para comunicação com o servidor:

//Cria um canal para receber dados.
DataInputStream in=new DataInputStream(client.getInputStream());
//Cria um canal para enviar dados.
DataOutputStream out=new DataOutputStream(client.getOutputStream());

•

Passo 3 - Realizar comunicação com o servidor:

out.writeInt( 3 ); //Envia o inteiro 3.
out.writeUTF( “Hello” ); //Envia a string “Hello”.
int k = in.readInt(); //Aguarda o recebimento de um inteiro.
String s = in.readUTF(); //Aguarda o recebimento de uma string.

•

Passo 4 - Fechar fluxos (streams) e conexão:

//Fecha os canais de entrada e saída.
in.close();
out.close();
//Fecha o socket.
client.close();

2.2.

Criando um socket servidor:
•

Passo 1 - Criar o socket servidor:

//Cria um socket servidor na porta 80
ServerSocket serverSocket=new ServerSocket(80);

•

Passo 2 - Aguardar novas conexões:

// O metodo accept retorna um socket para comunicação com o próximo
//cliente a conectar.
// A execução do método bloqueia até que algum cliente conecte no servidor.
Socket socket = serverSocket.accept();
•

Passo 3 - Obter fluxos (streams) de entrada e saída para comunicação com o cliente:

//Cria um canal para receber dados.
DataInputStream in=new DataInputStream(socket.getInputStream());
//Cria um canal para enviar dados.
DataOutputStream out=new DataOutputStream(socket.getOutputStream());

•

Passo 4 - Realizar comunicação com o servidor:

int k = in.readInt(); //Aguarda o recebimento de um int.
String s = in.readUTF() ; //Aguarda o recebimento de uma string.
out.writeInt(3); //Envia um int.
out.writeUTF(“Hello”); //Envia uma string.

•

Passo 5 - Fechar fluxos (streams) e socket cliente:

//Fecha os canais in e out do socket que está atendendo o cliente
in.close();
out.close();
//Fecha o socket que está atendendo o cliente.
socket.close();

•

Passo 6 - Fechar o socket servidor:

//Fechando o servidor.
serverSocket.close();

A utilização do modo orientado a conexão possibilita algumas funcionalidades interessantes como a
utilização de canais unidirecionais, que podem ser obtidos através dos métodos socket.shutdownInput() ou
socket.shutdownOutput().
Java provê também algumas implementações de alto nível para sockets TCP/IP, como por exemplo,
um conector para o protocolo HTTP (java.net.HttpURLConnection).
3. Sockets UDP/IP
Sockets UDP/IP são muito mais rápidos que sockets TCP/IP. São mais simples, porém menos
confiáveis. Em UDP não temos o estabelecimento de conexão, sendo que a comunicação ocorre apenas
com o envio de mensagens.
Uma mensagem é um datagrama, que é composto de um remetente (sender), um destinatário ou
receptor (receiver), e a mensagem (content). Em UDP, caso o destinatário não esteja aguardando uma
mensagem, ela é perdida. A figura 3 apresenta o envio de um datagrama de uma suposta máquina (Maq1)
para outra (Maq2) em uma rede.

Figura 3

A seguir serão apresentadas as ações necessárias para implementar comunicação utilizando sockets
UDP:

3.1.

Enviando uma mensagem:
•

Passo 1 - Criar o socket:

//sender socket não precisa de uma porta em especial.
DatagramSocket clientSocket=new DatagramSocket();

•

Passo2 - Criando e enviando o datagrama:

InetAddress addr=InetAddress.getByName(“www.javasoft.com”);
String toSend =“PERGUNTA”;
byte[] buffer = toSend.getBytes();
//Enviar datagrama para destinatário na porta 4545.
DatagramPacket question = new DatagramPacket(buffer, buffer.length, addr, 4545);
//Envia o datagrama.
clientSocket.send(question);
•

Passo 3 - Recebendo e abrindo uma resposta:

//Passa um buffer e o tamanho do buffer para receber a mensagem.
//Caso o conteúdo da mensagem recebida for maior que o buffer
// o excedente é perdido.
DatagramPacket answer=new DatagramPacket(new byte[512], 512);
clientSocket.receive(answer);

•

Passo 4 - Fechando o socket:

//Fechando o socket.
clientSocket.close();

3.2.

Recebendo mensagens:
•

Passo 1 - Criando um socket servidor:

//Escutando na porta 4545.
DatagramSocket serverSocket=new DatagramSocket(4545);

•

Passo 2 - Recebendo um datagrama:

//Cria o datagrama para receber uma mensagem.
DatagramPacket question=new DatagramPacket(new byte[512], 512);
//Aguarda até o recebimento de uma mensagem.
serverSocket.receive(question);

•

Passo 3 - Enviando uma resposta:

String toSend=“RESPOSTA”;
byte[] buffer = toSend.getBytes();
DatagramPacket answer = new DatagramPacket (buffer, buffer.length,
question.getAddress()/*sender info*/, question.getPort()/*sender info*/);
serverSocket.send(answer);
•

Passo 4 - Fechando o servidor:

//Fechando o servidor.
serverSocket.close();

3.3.

Multicast

O protocolo UDP suporta o envio de uma mensagem para um grupo de destinatários ao invés de um
único destinatário. Isto é denominado multicast. Um grupo multicast é especificado por um endereço IP de
classe “D” (224.0.0.1 até 239.255.255.255, inclusive) e uma porta UDP. Classes IP definem ranges de
endereços. O endereço 224.0.0.0 é reservado e não deve ser utilizado. Em Java o suporte a multicast é
oferecido através da classe java.net.MulticastSocket.
A seguir temos as ações necessárias para a utilização de multicast com sockets UDP.
InetAddress group = InetAddress.getByName("228.5.6.7");
MulticastSocket s = new MulticastSocket(6789);
// Entra no grupo. A partir deste momento as mensagens
//para 228.5.6.7 serao recebidas em s.
s.joinGroup(group);
// Envia e recebe mensagens UDP conforme apresentado anteriormente...
// Retira-se do grupo. Mensagens para 228.5.6.7
//não mais chegarão até o socket s.
s.leaveGroup(group);

4. New I/O API
O novo pacote de I/O (java.nio), introduzido na versão J2SE 1.4 traz novas funcionalidades e
avanços significativos de desempenho em I/O em JAVA. Dentre as diversas funcionalidades temos uma
nova abstração para I/O que são os canais (channels). Um canal é uma abstração que representa uma
conexão entre entidades que fazem operações de I/O. No caso de sockets temos as classes
java.nio.channels.ServerSocketChannel e java.nio.channels.SocketChannel. A
utilização de canais possibilita uma forma mais simples para realizar comunicação, pois basta abrir o canal,
escrever e/ou ler, e ao final da execução, fechar o canal. As implementações destas classes de canais de
socket utilizam as classes java.net.ServerSocket e java.net.Socket, já vistas.
Ao final deste artigo será apresentado um exemplo de utilização de canais para acessar um servidor
www.
5. Conclusão
Este artigo apresentou as principais formas de networking oferecidas por Java, porém o suporte a
networking oferecido por Java é mais abrangente. Existem algumas configurações que podem ser realizadas
na utilização de IP, como a configuração de timeouts (tempo de espera máximo para realização de
operações), buffers (tamanho do buffer dos pacotes), keep alive (mensagem automática para verificação de
disponibilidade dos pares em uma conexão quando a conexão não está em utilização), além de outras
configurações. Estas configurações podem ser verificadas na interface java.net.SocketOptions.
Para os entusiastas em networking, temos algumas outras funcionalidades do J2SE 1.4 que não
mencionamos, porém são muito interessantes. Entre elas podemos destacar o suporte à IPv6, suporte à
operações assíncronas, suporte à Secure Socket Layer (permite socket seguro), além de outras novidades.
Maiores detalhes podem ser encontrados em:
http://java.sun.com/j2se/1.4.2/docs/guide/net/enhancements14.html
Exemplo de conexão em um servidor www utilizando Channels:
import
import
import
import
import

java.io.IOException;
java.net.InetSocketAddress;
java.nio.charset.Charset;
java.nio.ByteBuffer;
java.nio.channels.SocketChannel;

public class Test {
static public void main(String[] args) {
Charset charset=Charset.forName("UTF-8");
SocketChannel channel=null;
try {
InetSocketAddress socketAddr=
new InetSocketAddress("www.sumersoft.com", 80);
//Abre a conexão
channel=SocketChannel.open(socketAddr);
//Envia dados
channel.write(charset.encode("GET /index.htmlrnrn"));
ByteBuffer buffer=ByteBuffer.allocate(2048);
//Enquanto houver dados pega do buffer e imprime.
while((channel.read(buffer))!=-1) {
buffer.flip();
System.err.println(charset.decode(buffer));
buffer.clear();
}
} catch(IOException e) {
e.printStackTrace();
} finally {
if(channel!=null) {
try {
channel.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
}
}
Autor:
Leonardo R. Nunes - leonardo@sumersoft.com - Formado em Ciência da Computação pela PUCPR,
mestrando em Sistemas Distribuídos na PUCPR, trabalha com desenvolvimento de software orientado a
objetos utilizando Java desde 1997. Desenvolveu aplicações Java para a área de telefonia, área industrial e
de telecomunicações. Atualmente é Diretor da Sumersoft Tecnologia (http://www.sumersoft.com) e
Coordenador do PRoJAVA (http://www.projava.com.br).

Mais conteúdo relacionado

Mais procurados

Seguranca em IPv6 com Mikrotik RouterOS
Seguranca em IPv6 com Mikrotik RouterOSSeguranca em IPv6 com Mikrotik RouterOS
Seguranca em IPv6 com Mikrotik RouterOS
Wardner Maia
 
R&C 0202 07 1
R&C 0202 07 1R&C 0202 07 1
R&C 0202 07 1
guest6a825195
 
Protocolos
ProtocolosProtocolos
Protocolos
faustino fato
 
Java network-sockets-etc
Java network-sockets-etcJava network-sockets-etc
Java network-sockets-etc
Universidade de São Paulo
 
Sistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - SocketSistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - Socket
Adriano Teixeira de Souza
 
Redes de Comunicacao-Camada de transporte
Redes de Comunicacao-Camada de transporte Redes de Comunicacao-Camada de transporte
Redes de Comunicacao-Camada de transporte
Carlitos Fainda Chitsumba
 
Threads e sockets java
Threads e sockets javaThreads e sockets java
Threads e sockets java
Adriano Negrão
 
Criando temas para Joomla, Wordpress, Drupal e tudo mais sem tocar em templa...
Criando temas para Joomla, Wordpress, Drupal e tudo mais  sem tocar em templa...Criando temas para Joomla, Wordpress, Drupal e tudo mais  sem tocar em templa...
Criando temas para Joomla, Wordpress, Drupal e tudo mais sem tocar em templa...
Simples Consultoria
 
Gerenciamento de Servidores Linux utilizando SNMP
Gerenciamento de Servidores Linux utilizando SNMPGerenciamento de Servidores Linux utilizando SNMP
Gerenciamento de Servidores Linux utilizando SNMP
André Déo
 
Mikrotik passo a passo
Mikrotik   passo a passoMikrotik   passo a passo
Mikrotik passo a passo
Ivan de Sousa
 
Evolução protocolo rdt
Evolução protocolo rdtEvolução protocolo rdt
Evolução protocolo rdt
Marllus Lustosa
 
Aula 1
Aula 1Aula 1
Ferramentas para Detecção de Problemas em Redes
Ferramentas para Detecção de Problemas em RedesFerramentas para Detecção de Problemas em Redes
Ferramentas para Detecção de Problemas em Redes
Frederico Madeira
 
Redes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de TransporteRedes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de Transporte
Wellington Oliveira
 
Socket
SocketSocket
Livro pfsense 2.0 em português
Livro pfsense 2.0 em portuguêsLivro pfsense 2.0 em português
Livro pfsense 2.0 em português
David de Assis
 
Card sharing com dreambox 500 s
Card sharing com dreambox 500 sCard sharing com dreambox 500 s
Card sharing com dreambox 500 s
tiagodcac
 
Gerência de Redes - 2.Modelo SNMP
Gerência de Redes - 2.Modelo SNMPGerência de Redes - 2.Modelo SNMP
Gerência de Redes - 2.Modelo SNMP
Mauro Tapajós
 
Socket
SocketSocket
Socket
Baguiasri
 

Mais procurados (19)

Seguranca em IPv6 com Mikrotik RouterOS
Seguranca em IPv6 com Mikrotik RouterOSSeguranca em IPv6 com Mikrotik RouterOS
Seguranca em IPv6 com Mikrotik RouterOS
 
R&C 0202 07 1
R&C 0202 07 1R&C 0202 07 1
R&C 0202 07 1
 
Protocolos
ProtocolosProtocolos
Protocolos
 
Java network-sockets-etc
Java network-sockets-etcJava network-sockets-etc
Java network-sockets-etc
 
Sistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - SocketSistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - Socket
 
Redes de Comunicacao-Camada de transporte
Redes de Comunicacao-Camada de transporte Redes de Comunicacao-Camada de transporte
Redes de Comunicacao-Camada de transporte
 
Threads e sockets java
Threads e sockets javaThreads e sockets java
Threads e sockets java
 
Criando temas para Joomla, Wordpress, Drupal e tudo mais sem tocar em templa...
Criando temas para Joomla, Wordpress, Drupal e tudo mais  sem tocar em templa...Criando temas para Joomla, Wordpress, Drupal e tudo mais  sem tocar em templa...
Criando temas para Joomla, Wordpress, Drupal e tudo mais sem tocar em templa...
 
Gerenciamento de Servidores Linux utilizando SNMP
Gerenciamento de Servidores Linux utilizando SNMPGerenciamento de Servidores Linux utilizando SNMP
Gerenciamento de Servidores Linux utilizando SNMP
 
Mikrotik passo a passo
Mikrotik   passo a passoMikrotik   passo a passo
Mikrotik passo a passo
 
Evolução protocolo rdt
Evolução protocolo rdtEvolução protocolo rdt
Evolução protocolo rdt
 
Aula 1
Aula 1Aula 1
Aula 1
 
Ferramentas para Detecção de Problemas em Redes
Ferramentas para Detecção de Problemas em RedesFerramentas para Detecção de Problemas em Redes
Ferramentas para Detecção de Problemas em Redes
 
Redes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de TransporteRedes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de Transporte
 
Socket
SocketSocket
Socket
 
Livro pfsense 2.0 em português
Livro pfsense 2.0 em portuguêsLivro pfsense 2.0 em português
Livro pfsense 2.0 em português
 
Card sharing com dreambox 500 s
Card sharing com dreambox 500 sCard sharing com dreambox 500 s
Card sharing com dreambox 500 s
 
Gerência de Redes - 2.Modelo SNMP
Gerência de Redes - 2.Modelo SNMPGerência de Redes - 2.Modelo SNMP
Gerência de Redes - 2.Modelo SNMP
 
Socket
SocketSocket
Socket
 

Destaque

Substantivo 2003
Substantivo 2003Substantivo 2003
Substantivo 2003
Domingos Oliveira Sousa
 
Turismo rural y el Bierzo
Turismo rural y el BierzoTurismo rural y el Bierzo
Turismo rural y el Bierzo
Mercados336
 
Exercício aula 4 e 5
Exercício aula 4 e 5Exercício aula 4 e 5
Exercício aula 4 e 5
tatianedaianeleal
 
Eventos e publicações 2010
Eventos e publicações 2010Eventos e publicações 2010
Eventos e publicações 2010
Joseane Bispo
 
FGV / IBRE - Infraestrutura e Construção Pesada no Brasil
FGV / IBRE - Infraestrutura e Construção Pesada no BrasilFGV / IBRE - Infraestrutura e Construção Pesada no Brasil
FGV / IBRE - Infraestrutura e Construção Pesada no Brasil
FGV | Fundação Getulio Vargas
 
Las TICs
Las TICs Las TICs
Las TICs
jesusdp26399
 
FGV / IBRE - Infraestrutura e Construção Pesada no Brasil
FGV / IBRE - Infraestrutura e Construção Pesada no BrasilFGV / IBRE - Infraestrutura e Construção Pesada no Brasil
FGV / IBRE - Infraestrutura e Construção Pesada no Brasil
FGV | Fundação Getulio Vargas
 
Tema
TemaTema
Tema
SILVMATHS
 
Lucely uchoa o ceu vai se abrir
Lucely uchoa o ceu vai se abrirLucely uchoa o ceu vai se abrir
Lucely uchoa o ceu vai se abrir
Vyeyra Santos
 
Ganadores croodsbicis
Ganadores croodsbicisGanadores croodsbicis
Ganadores croodsbicis
Patricia Ortega
 
Economia social
Economia socialEconomia social
Economia social
jesusdp26399
 
Entendendo a Compilação
Entendendo a CompilaçãoEntendendo a Compilação
Entendendo a Compilação
Wanderley Caloni
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
DesaOrtega
 
ADA Discrimen Educacion Menores
ADA Discrimen Educacion MenoresADA Discrimen Educacion Menores
ADA Discrimen Educacion Menores
Jose L. Rosario Vargas
 
Ley Contra Acecho
Ley Contra AcechoLey Contra Acecho
Ley Contra Acecho
Jose L. Rosario Vargas
 
Power point entrevistas
Power point entrevistasPower point entrevistas
Power point entrevistas
Mercados336
 
Demanda Dept. Familia
Demanda Dept. FamiliaDemanda Dept. Familia
Demanda Dept. Familia
Jose L. Rosario Vargas
 
51.2 ribeiro o medievismo em gonçalves dias
51.2 ribeiro o medievismo em gonçalves dias51.2 ribeiro o medievismo em gonçalves dias
51.2 ribeiro o medievismo em gonçalves dias
Hadoock Ezequiel
 
Trabajos en altura
Trabajos en alturaTrabajos en altura
Trabajos en altura
tano1973
 
Evolución y Retos de la Educación Virtual
Evolución y Retos de la Educación VirtualEvolución y Retos de la Educación Virtual
Evolución y Retos de la Educación Virtual
alvaropadillalun2
 

Destaque (20)

Substantivo 2003
Substantivo 2003Substantivo 2003
Substantivo 2003
 
Turismo rural y el Bierzo
Turismo rural y el BierzoTurismo rural y el Bierzo
Turismo rural y el Bierzo
 
Exercício aula 4 e 5
Exercício aula 4 e 5Exercício aula 4 e 5
Exercício aula 4 e 5
 
Eventos e publicações 2010
Eventos e publicações 2010Eventos e publicações 2010
Eventos e publicações 2010
 
FGV / IBRE - Infraestrutura e Construção Pesada no Brasil
FGV / IBRE - Infraestrutura e Construção Pesada no BrasilFGV / IBRE - Infraestrutura e Construção Pesada no Brasil
FGV / IBRE - Infraestrutura e Construção Pesada no Brasil
 
Las TICs
Las TICs Las TICs
Las TICs
 
FGV / IBRE - Infraestrutura e Construção Pesada no Brasil
FGV / IBRE - Infraestrutura e Construção Pesada no BrasilFGV / IBRE - Infraestrutura e Construção Pesada no Brasil
FGV / IBRE - Infraestrutura e Construção Pesada no Brasil
 
Tema
TemaTema
Tema
 
Lucely uchoa o ceu vai se abrir
Lucely uchoa o ceu vai se abrirLucely uchoa o ceu vai se abrir
Lucely uchoa o ceu vai se abrir
 
Ganadores croodsbicis
Ganadores croodsbicisGanadores croodsbicis
Ganadores croodsbicis
 
Economia social
Economia socialEconomia social
Economia social
 
Entendendo a Compilação
Entendendo a CompilaçãoEntendendo a Compilação
Entendendo a Compilação
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
ADA Discrimen Educacion Menores
ADA Discrimen Educacion MenoresADA Discrimen Educacion Menores
ADA Discrimen Educacion Menores
 
Ley Contra Acecho
Ley Contra AcechoLey Contra Acecho
Ley Contra Acecho
 
Power point entrevistas
Power point entrevistasPower point entrevistas
Power point entrevistas
 
Demanda Dept. Familia
Demanda Dept. FamiliaDemanda Dept. Familia
Demanda Dept. Familia
 
51.2 ribeiro o medievismo em gonçalves dias
51.2 ribeiro o medievismo em gonçalves dias51.2 ribeiro o medievismo em gonçalves dias
51.2 ribeiro o medievismo em gonçalves dias
 
Trabajos en altura
Trabajos en alturaTrabajos en altura
Trabajos en altura
 
Evolución y Retos de la Educación Virtual
Evolución y Retos de la Educación VirtualEvolución y Retos de la Educación Virtual
Evolución y Retos de la Educación Virtual
 

Semelhante a 1089335456 paper 4 sockets em java

Java recursos avançados - socket connection
Java   recursos avançados - socket connectionJava   recursos avançados - socket connection
Java recursos avançados - socket connection
Armando Daniel
 
Implementação de Sockets em JAVA
Implementação de Sockets em JAVAImplementação de Sockets em JAVA
Implementação de Sockets em JAVA
Marcio Palheta
 
Protocólo FTP
Protocólo FTPProtocólo FTP
Protocólo FTP
Hudson Brendon
 
Fundamentos de Sockets
Fundamentos de SocketsFundamentos de Sockets
Fundamentos de Sockets
Denis L Presciliano
 
Fundamentos de Sockets
Fundamentos de SocketsFundamentos de Sockets
Fundamentos de Sockets
Denis L Presciliano
 
Servlets 3: o contexto assíncrono - JavaOne 2010 - Paulo Silveira
Servlets 3: o contexto assíncrono - JavaOne 2010 - Paulo SilveiraServlets 3: o contexto assíncrono - JavaOne 2010 - Paulo Silveira
Servlets 3: o contexto assíncrono - JavaOne 2010 - Paulo Silveira
Caelum
 
1º Artigo De GerêNcia De Redes
1º Artigo De GerêNcia De Redes1º Artigo De GerêNcia De Redes
1º Artigo De GerêNcia De Redes
manustm
 
Artigo(Elton Bsi 2006)
Artigo(Elton   Bsi 2006)Artigo(Elton   Bsi 2006)
Artigo(Elton Bsi 2006)
Elton Raniere
 
Aplicações web parte 2
Aplicações web parte 2Aplicações web parte 2
Aplicações web parte 2
Elaine Cecília Gatto
 
Sistemas Distribuídos - Aula 05
Sistemas Distribuídos - Aula 05Sistemas Distribuídos - Aula 05
Sistemas Distribuídos - Aula 05
Arthur Emanuel
 
02 - Aplicação-Transporte.pdf
02 - Aplicação-Transporte.pdf02 - Aplicação-Transporte.pdf
02 - Aplicação-Transporte.pdf
edsonjcg
 
Lista 03 respostas
Lista 03 respostasLista 03 respostas
Lista 03 respostas
Força Tauá
 
cap4.ppt
cap4.pptcap4.ppt
cap4.ppt
JoberthSilva
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
Glaucio Scheibel
 
Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - Resumo
Handerson Frota
 
Java Comunicação Serial
Java Comunicação SerialJava Comunicação Serial
Java Comunicação Serial
Andrei Bastos
 
44 sockets[1]
44 sockets[1]44 sockets[1]
44 sockets[1]
tomasgongacalunga
 
Protocolo MQTT - Redes de Computadores
Protocolo MQTT - Redes de Computadores Protocolo MQTT - Redes de Computadores
Protocolo MQTT - Redes de Computadores
Maurício Moreira Neto
 
Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e so...
Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e so...Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e so...
Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e so...
Andre Devecchi
 
Tecnologia em Redes - Servidor WEB
Tecnologia em Redes - Servidor WEBTecnologia em Redes - Servidor WEB
Tecnologia em Redes - Servidor WEB
elliando dias
 

Semelhante a 1089335456 paper 4 sockets em java (20)

Java recursos avançados - socket connection
Java   recursos avançados - socket connectionJava   recursos avançados - socket connection
Java recursos avançados - socket connection
 
Implementação de Sockets em JAVA
Implementação de Sockets em JAVAImplementação de Sockets em JAVA
Implementação de Sockets em JAVA
 
Protocólo FTP
Protocólo FTPProtocólo FTP
Protocólo FTP
 
Fundamentos de Sockets
Fundamentos de SocketsFundamentos de Sockets
Fundamentos de Sockets
 
Fundamentos de Sockets
Fundamentos de SocketsFundamentos de Sockets
Fundamentos de Sockets
 
Servlets 3: o contexto assíncrono - JavaOne 2010 - Paulo Silveira
Servlets 3: o contexto assíncrono - JavaOne 2010 - Paulo SilveiraServlets 3: o contexto assíncrono - JavaOne 2010 - Paulo Silveira
Servlets 3: o contexto assíncrono - JavaOne 2010 - Paulo Silveira
 
1º Artigo De GerêNcia De Redes
1º Artigo De GerêNcia De Redes1º Artigo De GerêNcia De Redes
1º Artigo De GerêNcia De Redes
 
Artigo(Elton Bsi 2006)
Artigo(Elton   Bsi 2006)Artigo(Elton   Bsi 2006)
Artigo(Elton Bsi 2006)
 
Aplicações web parte 2
Aplicações web parte 2Aplicações web parte 2
Aplicações web parte 2
 
Sistemas Distribuídos - Aula 05
Sistemas Distribuídos - Aula 05Sistemas Distribuídos - Aula 05
Sistemas Distribuídos - Aula 05
 
02 - Aplicação-Transporte.pdf
02 - Aplicação-Transporte.pdf02 - Aplicação-Transporte.pdf
02 - Aplicação-Transporte.pdf
 
Lista 03 respostas
Lista 03 respostasLista 03 respostas
Lista 03 respostas
 
cap4.ppt
cap4.pptcap4.ppt
cap4.ppt
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - Resumo
 
Java Comunicação Serial
Java Comunicação SerialJava Comunicação Serial
Java Comunicação Serial
 
44 sockets[1]
44 sockets[1]44 sockets[1]
44 sockets[1]
 
Protocolo MQTT - Redes de Computadores
Protocolo MQTT - Redes de Computadores Protocolo MQTT - Redes de Computadores
Protocolo MQTT - Redes de Computadores
 
Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e so...
Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e so...Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e so...
Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e so...
 
Tecnologia em Redes - Servidor WEB
Tecnologia em Redes - Servidor WEBTecnologia em Redes - Servidor WEB
Tecnologia em Redes - Servidor WEB
 

Último

Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptxSlides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
LuizHenriquedeAlmeid6
 
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
AntnioManuelAgdoma
 
Aula 1 do livro de Ciências do aluno - sons
Aula 1 do livro de Ciências do aluno - sonsAula 1 do livro de Ciências do aluno - sons
Aula 1 do livro de Ciências do aluno - sons
Érika Rufo
 
Atividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º anoAtividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º ano
fernandacosta37763
 
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
MessiasMarianoG
 
Especialidade - Animais Ameaçados de Extinção(1).pdf
Especialidade - Animais Ameaçados de Extinção(1).pdfEspecialidade - Animais Ameaçados de Extinção(1).pdf
Especialidade - Animais Ameaçados de Extinção(1).pdf
DanielCastro80471
 
Fernão Lopes. pptx
Fernão Lopes.                       pptxFernão Lopes.                       pptx
Fernão Lopes. pptx
TomasSousa7
 
Sinais de pontuação
Sinais de pontuaçãoSinais de pontuação
Sinais de pontuação
Mary Alvarenga
 
- TEMPLATE DA PRATICA - Psicomotricidade.pptx
- TEMPLATE DA PRATICA - Psicomotricidade.pptx- TEMPLATE DA PRATICA - Psicomotricidade.pptx
- TEMPLATE DA PRATICA - Psicomotricidade.pptx
LucianaCristina58
 
Aula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptx
Aula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptxAula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptx
Aula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptx
edivirgesribeiro1
 
UFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdfUFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdf
Manuais Formação
 
livro ciclo da agua educação infantil.pdf
livro ciclo da agua educação infantil.pdflivro ciclo da agua educação infantil.pdf
livro ciclo da agua educação infantil.pdf
cmeioctaciliabetesch
 
Forças e leis de Newton 2024 - parte 1.pptx
Forças e leis de Newton 2024 - parte 1.pptxForças e leis de Newton 2024 - parte 1.pptx
Forças e leis de Newton 2024 - parte 1.pptx
Danielle Fernandes Amaro dos Santos
 
Egito antigo resumo - aula de história.pdf
Egito antigo resumo - aula de história.pdfEgito antigo resumo - aula de história.pdf
Egito antigo resumo - aula de história.pdf
sthefanydesr
 
Redação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptxRedação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptx
DECIOMAURINARAMOS
 
apresentação sobre Clarice Lispector .pptx
apresentação sobre Clarice Lispector .pptxapresentação sobre Clarice Lispector .pptx
apresentação sobre Clarice Lispector .pptx
JuliaMachado73
 
Introdução à Sociologia: caça-palavras na escola
Introdução à Sociologia: caça-palavras na escolaIntrodução à Sociologia: caça-palavras na escola
Introdução à Sociologia: caça-palavras na escola
Professor Belinaso
 
OS elementos de uma boa Redação para o ENEM.pdf
OS elementos de uma boa Redação para o ENEM.pdfOS elementos de uma boa Redação para o ENEM.pdf
OS elementos de uma boa Redação para o ENEM.pdf
AmiltonAparecido1
 
CADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdf
CADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdfCADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdf
CADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdf
NatySousa3
 
Funções e Progressões - Livro completo prisma
Funções e Progressões - Livro completo prismaFunções e Progressões - Livro completo prisma
Funções e Progressões - Livro completo prisma
djincognito
 

Último (20)

Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptxSlides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
 
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
 
Aula 1 do livro de Ciências do aluno - sons
Aula 1 do livro de Ciências do aluno - sonsAula 1 do livro de Ciências do aluno - sons
Aula 1 do livro de Ciências do aluno - sons
 
Atividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º anoAtividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º ano
 
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
 
Especialidade - Animais Ameaçados de Extinção(1).pdf
Especialidade - Animais Ameaçados de Extinção(1).pdfEspecialidade - Animais Ameaçados de Extinção(1).pdf
Especialidade - Animais Ameaçados de Extinção(1).pdf
 
Fernão Lopes. pptx
Fernão Lopes.                       pptxFernão Lopes.                       pptx
Fernão Lopes. pptx
 
Sinais de pontuação
Sinais de pontuaçãoSinais de pontuação
Sinais de pontuação
 
- TEMPLATE DA PRATICA - Psicomotricidade.pptx
- TEMPLATE DA PRATICA - Psicomotricidade.pptx- TEMPLATE DA PRATICA - Psicomotricidade.pptx
- TEMPLATE DA PRATICA - Psicomotricidade.pptx
 
Aula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptx
Aula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptxAula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptx
Aula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptx
 
UFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdfUFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdf
 
livro ciclo da agua educação infantil.pdf
livro ciclo da agua educação infantil.pdflivro ciclo da agua educação infantil.pdf
livro ciclo da agua educação infantil.pdf
 
Forças e leis de Newton 2024 - parte 1.pptx
Forças e leis de Newton 2024 - parte 1.pptxForças e leis de Newton 2024 - parte 1.pptx
Forças e leis de Newton 2024 - parte 1.pptx
 
Egito antigo resumo - aula de história.pdf
Egito antigo resumo - aula de história.pdfEgito antigo resumo - aula de história.pdf
Egito antigo resumo - aula de história.pdf
 
Redação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptxRedação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptx
 
apresentação sobre Clarice Lispector .pptx
apresentação sobre Clarice Lispector .pptxapresentação sobre Clarice Lispector .pptx
apresentação sobre Clarice Lispector .pptx
 
Introdução à Sociologia: caça-palavras na escola
Introdução à Sociologia: caça-palavras na escolaIntrodução à Sociologia: caça-palavras na escola
Introdução à Sociologia: caça-palavras na escola
 
OS elementos de uma boa Redação para o ENEM.pdf
OS elementos de uma boa Redação para o ENEM.pdfOS elementos de uma boa Redação para o ENEM.pdf
OS elementos de uma boa Redação para o ENEM.pdf
 
CADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdf
CADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdfCADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdf
CADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdf
 
Funções e Progressões - Livro completo prisma
Funções e Progressões - Livro completo prismaFunções e Progressões - Livro completo prisma
Funções e Progressões - Livro completo prisma
 

1089335456 paper 4 sockets em java

  • 1. Sockets em Java Leonardo R. Nunes - leonardo@sumersoft.com 1. Introdução A comunicação entre processos de software tornou-se indispensável nos sistemas atuais. O mecanismo mais utilizado atualmente para possibilitar comunicação entre aplicações é chamado socket. Neste artigo será apresentado o suporte que Java oferece para a utilização desse mecanismo de comunicação. Java oferece os seguintes modos de utilização de sockets: o modo orientado a conexão, que funciona sobre o protocolo TCP (Transmission Control Protocol, ou protocolo de controle de transmissão), e o modo orientado a datagrama, que funciona sobre o protocolo UDP (User Datagram Protocol, ou protocolo de datagrama de usuários). Os dois modos funcionam sobre o protocolo IP (Internet Protocol). Cada um desses modos tem sua aplicabilidade, e possuem vantagens e desvantagens em sua utilização. Modo orientado a conexão TCP/IP • • Modo orientado a datagrama UDP/IP • Serviços não confiáveis: Serviços confiáveis: o Mensagens podem ser perdidas; o Sem perdas de dados na rede; o Ordem das mensagens não é garantida; o Garantia de ordem dos pacotes; Possibilidade de utilização de fluxo de dados • Cada mensagem é um datagrama: [sender (remetente), receiver (receptor), contents (DataStreams); (conteúdo da mensagem)] Vantagem: Desvantagens: • É muito mais rápido que o modo orientado • É mais lento que o modo orientado a a conexão; datagrama; • Comportamento servidor diferente de comportamento cliente; 2. Sockets TCP/IP O processo de comunicação no modo orientado à conexão ocorre da seguinte forma: O servidor escolhe uma determinada porta (o termo correto seria porto, em inglês port, mas aqui no Brasil o termo utilizado comumente é porta) e fica aguardando conexões nesta porta. O cliente deve saber previamente qual a máquina servidora (host) e a porta que o servidor está aguardando conexões. Então o cliente solicita uma conexão em um host/porta, conforme demonstrado na figura 1.
  • 2. Figura 1 Se nenhum problema ocorrer, o servidor aceita a conexão gerando um socket em uma porta qualquer do lado servidor, criando assim um canal de comunicação entre o cliente e o servidor. A figura 2 demonstra este canal de comunicação. Figura 2 Tipicamente o comportamento do servidor é ficar em um loop aguardando novas conexões e gerando sockets para atender as solicitações de clientes. A seguir serão apresentadas as ações necessárias para implementar comunicação sobre TCP através de um socket cliente e um socket servidor: 2.1. Criando um socket cliente: • Passo 1 - Abrir a conexão: import java.io.* ; // streams import java.net.* ; // sockets //Conectar no servidor java.sun.com na porta 80. Socket client = new Socket(“java.sun.com”, 80);
  • 3. • Passo 2 - Obter fluxos (streams) de entrada e saída para comunicação com o servidor: //Cria um canal para receber dados. DataInputStream in=new DataInputStream(client.getInputStream()); //Cria um canal para enviar dados. DataOutputStream out=new DataOutputStream(client.getOutputStream()); • Passo 3 - Realizar comunicação com o servidor: out.writeInt( 3 ); //Envia o inteiro 3. out.writeUTF( “Hello” ); //Envia a string “Hello”. int k = in.readInt(); //Aguarda o recebimento de um inteiro. String s = in.readUTF(); //Aguarda o recebimento de uma string. • Passo 4 - Fechar fluxos (streams) e conexão: //Fecha os canais de entrada e saída. in.close(); out.close(); //Fecha o socket. client.close(); 2.2. Criando um socket servidor: • Passo 1 - Criar o socket servidor: //Cria um socket servidor na porta 80 ServerSocket serverSocket=new ServerSocket(80); • Passo 2 - Aguardar novas conexões: // O metodo accept retorna um socket para comunicação com o próximo //cliente a conectar. // A execução do método bloqueia até que algum cliente conecte no servidor. Socket socket = serverSocket.accept();
  • 4. • Passo 3 - Obter fluxos (streams) de entrada e saída para comunicação com o cliente: //Cria um canal para receber dados. DataInputStream in=new DataInputStream(socket.getInputStream()); //Cria um canal para enviar dados. DataOutputStream out=new DataOutputStream(socket.getOutputStream()); • Passo 4 - Realizar comunicação com o servidor: int k = in.readInt(); //Aguarda o recebimento de um int. String s = in.readUTF() ; //Aguarda o recebimento de uma string. out.writeInt(3); //Envia um int. out.writeUTF(“Hello”); //Envia uma string. • Passo 5 - Fechar fluxos (streams) e socket cliente: //Fecha os canais in e out do socket que está atendendo o cliente in.close(); out.close(); //Fecha o socket que está atendendo o cliente. socket.close(); • Passo 6 - Fechar o socket servidor: //Fechando o servidor. serverSocket.close(); A utilização do modo orientado a conexão possibilita algumas funcionalidades interessantes como a utilização de canais unidirecionais, que podem ser obtidos através dos métodos socket.shutdownInput() ou socket.shutdownOutput(). Java provê também algumas implementações de alto nível para sockets TCP/IP, como por exemplo, um conector para o protocolo HTTP (java.net.HttpURLConnection).
  • 5. 3. Sockets UDP/IP Sockets UDP/IP são muito mais rápidos que sockets TCP/IP. São mais simples, porém menos confiáveis. Em UDP não temos o estabelecimento de conexão, sendo que a comunicação ocorre apenas com o envio de mensagens. Uma mensagem é um datagrama, que é composto de um remetente (sender), um destinatário ou receptor (receiver), e a mensagem (content). Em UDP, caso o destinatário não esteja aguardando uma mensagem, ela é perdida. A figura 3 apresenta o envio de um datagrama de uma suposta máquina (Maq1) para outra (Maq2) em uma rede. Figura 3 A seguir serão apresentadas as ações necessárias para implementar comunicação utilizando sockets UDP: 3.1. Enviando uma mensagem: • Passo 1 - Criar o socket: //sender socket não precisa de uma porta em especial. DatagramSocket clientSocket=new DatagramSocket(); • Passo2 - Criando e enviando o datagrama: InetAddress addr=InetAddress.getByName(“www.javasoft.com”); String toSend =“PERGUNTA”; byte[] buffer = toSend.getBytes(); //Enviar datagrama para destinatário na porta 4545. DatagramPacket question = new DatagramPacket(buffer, buffer.length, addr, 4545); //Envia o datagrama. clientSocket.send(question);
  • 6. • Passo 3 - Recebendo e abrindo uma resposta: //Passa um buffer e o tamanho do buffer para receber a mensagem. //Caso o conteúdo da mensagem recebida for maior que o buffer // o excedente é perdido. DatagramPacket answer=new DatagramPacket(new byte[512], 512); clientSocket.receive(answer); • Passo 4 - Fechando o socket: //Fechando o socket. clientSocket.close(); 3.2. Recebendo mensagens: • Passo 1 - Criando um socket servidor: //Escutando na porta 4545. DatagramSocket serverSocket=new DatagramSocket(4545); • Passo 2 - Recebendo um datagrama: //Cria o datagrama para receber uma mensagem. DatagramPacket question=new DatagramPacket(new byte[512], 512); //Aguarda até o recebimento de uma mensagem. serverSocket.receive(question); • Passo 3 - Enviando uma resposta: String toSend=“RESPOSTA”; byte[] buffer = toSend.getBytes(); DatagramPacket answer = new DatagramPacket (buffer, buffer.length, question.getAddress()/*sender info*/, question.getPort()/*sender info*/); serverSocket.send(answer);
  • 7. • Passo 4 - Fechando o servidor: //Fechando o servidor. serverSocket.close(); 3.3. Multicast O protocolo UDP suporta o envio de uma mensagem para um grupo de destinatários ao invés de um único destinatário. Isto é denominado multicast. Um grupo multicast é especificado por um endereço IP de classe “D” (224.0.0.1 até 239.255.255.255, inclusive) e uma porta UDP. Classes IP definem ranges de endereços. O endereço 224.0.0.0 é reservado e não deve ser utilizado. Em Java o suporte a multicast é oferecido através da classe java.net.MulticastSocket. A seguir temos as ações necessárias para a utilização de multicast com sockets UDP. InetAddress group = InetAddress.getByName("228.5.6.7"); MulticastSocket s = new MulticastSocket(6789); // Entra no grupo. A partir deste momento as mensagens //para 228.5.6.7 serao recebidas em s. s.joinGroup(group); // Envia e recebe mensagens UDP conforme apresentado anteriormente... // Retira-se do grupo. Mensagens para 228.5.6.7 //não mais chegarão até o socket s. s.leaveGroup(group); 4. New I/O API O novo pacote de I/O (java.nio), introduzido na versão J2SE 1.4 traz novas funcionalidades e avanços significativos de desempenho em I/O em JAVA. Dentre as diversas funcionalidades temos uma nova abstração para I/O que são os canais (channels). Um canal é uma abstração que representa uma conexão entre entidades que fazem operações de I/O. No caso de sockets temos as classes java.nio.channels.ServerSocketChannel e java.nio.channels.SocketChannel. A utilização de canais possibilita uma forma mais simples para realizar comunicação, pois basta abrir o canal, escrever e/ou ler, e ao final da execução, fechar o canal. As implementações destas classes de canais de socket utilizam as classes java.net.ServerSocket e java.net.Socket, já vistas. Ao final deste artigo será apresentado um exemplo de utilização de canais para acessar um servidor www.
  • 8. 5. Conclusão Este artigo apresentou as principais formas de networking oferecidas por Java, porém o suporte a networking oferecido por Java é mais abrangente. Existem algumas configurações que podem ser realizadas na utilização de IP, como a configuração de timeouts (tempo de espera máximo para realização de operações), buffers (tamanho do buffer dos pacotes), keep alive (mensagem automática para verificação de disponibilidade dos pares em uma conexão quando a conexão não está em utilização), além de outras configurações. Estas configurações podem ser verificadas na interface java.net.SocketOptions. Para os entusiastas em networking, temos algumas outras funcionalidades do J2SE 1.4 que não mencionamos, porém são muito interessantes. Entre elas podemos destacar o suporte à IPv6, suporte à operações assíncronas, suporte à Secure Socket Layer (permite socket seguro), além de outras novidades. Maiores detalhes podem ser encontrados em: http://java.sun.com/j2se/1.4.2/docs/guide/net/enhancements14.html
  • 9. Exemplo de conexão em um servidor www utilizando Channels: import import import import import java.io.IOException; java.net.InetSocketAddress; java.nio.charset.Charset; java.nio.ByteBuffer; java.nio.channels.SocketChannel; public class Test { static public void main(String[] args) { Charset charset=Charset.forName("UTF-8"); SocketChannel channel=null; try { InetSocketAddress socketAddr= new InetSocketAddress("www.sumersoft.com", 80); //Abre a conexão channel=SocketChannel.open(socketAddr); //Envia dados channel.write(charset.encode("GET /index.htmlrnrn")); ByteBuffer buffer=ByteBuffer.allocate(2048); //Enquanto houver dados pega do buffer e imprime. while((channel.read(buffer))!=-1) { buffer.flip(); System.err.println(charset.decode(buffer)); buffer.clear(); } } catch(IOException e) { e.printStackTrace(); } finally { if(channel!=null) { try { channel.close(); } catch(IOException e) { e.printStackTrace(); } } } } }
  • 10. Autor: Leonardo R. Nunes - leonardo@sumersoft.com - Formado em Ciência da Computação pela PUCPR, mestrando em Sistemas Distribuídos na PUCPR, trabalha com desenvolvimento de software orientado a objetos utilizando Java desde 1997. Desenvolveu aplicações Java para a área de telefonia, área industrial e de telecomunicações. Atualmente é Diretor da Sumersoft Tecnologia (http://www.sumersoft.com) e Coordenador do PRoJAVA (http://www.projava.com.br).