SlideShare uma empresa Scribd logo
Implementando comunicação em JAVA via Sockets Alcides Calsavara - alcides@ppgia.pucpr.br Leonardo R. Nunes - leonardo@sumersoft.com
Sockets Utilizado para comunicação entre processos; Compreendendo Sockets - diagramas: sockets.pdf socketsgeral.pdf
Sockets Mecanismo básico de comunicação sobre IP Fornece três modos de acesso: Modo orientado a conexão (connection-oriented): Socket, ServerSocket; Modo orientado a datagrama (datagram-oriented): DatagramSocket, MulticastSocket; Acesso a dados IP de baixo nível (raw ip data): SocketImpl
Modo orientado a conexão (connection-oriented) Funciona sobre o protocolo TCP/IP Serviços confiáveis: Sem perdas de dados na rede; Garantia de ordem dos pacotes; “ Data streams” podem ser utilizados Desvantagens: É mais lento que o modo orientado a datagrama; Comportamento servidor diferente do comportamento cliente;
Ações para implementar um  socket cliente 1 - Abrir a conexão: import java.io.* ;  // streams import java.net.* ;  // sockets Socket  clientSocket  = new  Socket (“www.javasoft.com”, 80);
Ações para implementar um  socket cliente 2 - Pegando os streams de entrada e saída: DataInputStream  inbound  = new DataInputStream (  clientSocket .getInputStream( ) ); DataOutputStream  outbound  = new DataOutputStream (  clientSocket .getOutputStream( ) );
Ações para implementar um  socket cliente 3 - Utilizando os streams de entrada e saída: outbound .writeInt( 3 ); outbound .writeUTF( “Hello” ); int k =    inbound .readInt( ); String s =  inbound .readUTF() ;
Ações para implementar um  socket cliente 4 – Fechando os streams de entrada e saída: inbound .close () ; outbound .close () ; 5 – Fechando o socket: clientSocket .close() ;
Ações para implementar um  socket servidor 1 - Criar o server socket: ServerSocket  serverSocket  = new ServerSocket (80, 5); 2 - Aguardar conexoes de clientes: Socket  clientSocket  =  serverSocket .accept ();
Ações para implementar um  socket servidor 3 - Criar streams de entrada e saída do cliente: DataInputStream  inbound  = new DataInputStream (  clientSocket .getInputStream( ) ) ; DataOutputStream  outbound  = new DataOutputStream (  clientSocket .getOutputStream( ) ) ;
Ações para implementar um  socket servidor 4 - Conversando com o cliente: int k =    inbound .readInt( ); String s =  inbound .readUTF() ; outbound .writeInt( 3 ); outbound .writeUTF( “Hello” );
Ações para implementar um  socket servidor 5 - Fechando streams e socket cliente: inbound .close () ; outbound .close () ; clientSocket .close() ; 6 - Fechando o socket servidor: serverSocket .close() ;
Modo orientado a conexão - features Possibilidade de sockets unidirecional: socket.shutdownInput(); socket.shutdownOutput(); Implementações de alto nível para protocolos como http, etc...
Modo orientado a datagrama (datagram-oriented) Funciona sobre o protocolo UDP/IP Serviços não confiáveis: Mensagens podem ser perdidas; Ordem das mensagens não garantida; Cada mensagem é um datagrama: [sender, receiver, contents] Vantagem: É muito mais rápido que o modo orientado a conexão;
Utilizando datagramas (sender side) 1 - Criação do socket cliente: // sender socket doesn’t need // a special port number DatagramSocket  clientSocket  = new DatagramSocket () ;
Utilizando datagramas (sender side) 2 - Criando e enviando o datagrama: InetAddress addr=InetAddress.getByName (“www.javasoft.com”) ; String toSend = “ That’s my question! ” ; byte[] buffer = toSend.getBytes() ; // datagram to receiver’s port 4545 DatagramPacket  question  = new DatagramPacket (buffer, buffer.length, addr, 4545) ; clientSocket .send ( question ) ;
Utilizando datagramas (sender side) 3 - Recebendo e abrindo uma resposta: DatagramPacket  answer  = new DatagramPacket (new byte[512], 512); clientSocket .receive ( answer ) ; System.out.println ( answer .getData() + “\n” +  answer .getLength() + “\n” +  answer .getAddress() + “\n” +  answer .getPort() ) ;
Utilizando datagramas (sender side) 4 - Fechando  o socket clientSocket .close() ;
Utilizando datagramas (receiver side) 1 - Criando um socket servidor: // listens on port 4545 DatagramSocket  serverSocket  = new DatagramSocket (4545) ;
Utilizando datagramas (receiver side) 2 - Recebendo um datagrama: DatagramPacket  question  = new DatagramPacket (new byte[512], 512) ; serverSocket .receive ( question ) ;
Utilizando datagramas (receiver side) 3 - Enviando o datagrama resposta: String toSend = “ That’s the answer ! ” ; byte[] buffer = toSend.getBytes() ; DatagramPacket  answer  = new DatagramPacket (buffer, buffer.length, question .getAddress()/*sender info*/,  question .getPort()/*sender info*/); serverSocket .send ( answer ) ;
Utilizando datagramas (receiver side) 4 - Fechando o socket servidor: serverSocket .close() ;
Modo orientado a datagama – Multicast Um grupo “Multicast” é especificado por um endereço IP de classe “D” (224.0.0.0 até 239.255.255.255, inclusive) e uma porta UDP. O endereço 224.0.0.0 é reservado e não deve ser usado. MulticastSocket: InetAddress group = InetAddress.getByName("228.5.6.7"); MulticastSocket s = new MulticastSocket(6789); s. joinGroup (group); // Envia e recebe mensagens. s. leaveGroup (group);
Sockets sobre IP - TCP e UDP Algumas configurações: Timeout do Sistema Operacional; Utilização de buffers; KeepAlive; etc ...
Acesso a dados IP de baixo nível Java possibilita acesso a algumas configurações ip, mas não permite raw sockets. SocketImplFactory SocketImpl SocketOptions
Principais novidades do J2SE v1.4 Suporte à IPv6 SocketChannel Stream-oriented connecting sockets. Operações assíncronas Maior controle de execução e recursos (possibilidade de accept não bloqueante) Suporte a Secure Socket Layer Maiores detalhes: %JAVA_HOME%/docs/guide/net/enhancements14.html

Mais conteúdo relacionado

PDF
Criando temas para Joomla, Wordpress, Drupal e tudo mais sem tocar em templa...
PDF
1089335456 paper 4 sockets em java
PDF
Seguranca em IPv6 com Mikrotik RouterOS
PDF
Manual Kikrotik Completo
PDF
Aula 3 intraestrutura - 07012012
PDF
Meetup São Paulo, Maxscale Implementação e Casos de Uso
DOC
Mikrotik passo a passo
PDF
CACTI: Monitoramento Inteligente de Redes - Gabriel Stein
Criando temas para Joomla, Wordpress, Drupal e tudo mais sem tocar em templa...
1089335456 paper 4 sockets em java
Seguranca em IPv6 com Mikrotik RouterOS
Manual Kikrotik Completo
Aula 3 intraestrutura - 07012012
Meetup São Paulo, Maxscale Implementação e Casos de Uso
Mikrotik passo a passo
CACTI: Monitoramento Inteligente de Redes - Gabriel Stein

Mais procurados (7)

PPSX
Implementação de Servidor Linux Ubuntu Server
PDF
Java network-sockets-etc
PDF
MRTG - SNMP na Prática
PPTX
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC
PDF
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
PDF
SNMP - Rafael Rodriques
DOC
Curso básico de mikrotik
Implementação de Servidor Linux Ubuntu Server
Java network-sockets-etc
MRTG - SNMP na Prática
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
SNMP - Rafael Rodriques
Curso básico de mikrotik
Anúncio

Semelhante a Sockets java (20)

PDF
Lab 06 ping_com_udp
PDF
Node.js - #6 - Core Modules - net - Rodrigo Branas
PDF
Mini-Curso de Sockets no Unipê
ODP
Java 16 Jdbc
PDF
Java recursos avançados - socket connection
PDF
Protocolo MQTT - Redes de Computadores
PDF
Quebrando o monolito com microserviços - TDC 2017
PDF
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
PDF
Workshop Microservices - Construindo APIs RESTful com Spring Boot
PPT
OWASP AppSec 2010 BRAZIL Information Extraction Art of Testing Network Periph...
PDF
Fundamentos de Sockets
PDF
Fundamentos de Sockets
PDF
GUJavaSC - Combinando AngularJS com Java EE
KEY
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
PDF
QCon 2015 - Combinando AngularJS com Java EE
ODP
Servlets e JSP
PPTX
Camada de transporte parte1
PPTX
Informática Windows com questões de cincurso publico
PPTX
2016/08/19 - Uma visão geral da AWS para desenvolvedores
PDF
Desenvolvimento de um CRUD utilizando Stored Procedure
Lab 06 ping_com_udp
Node.js - #6 - Core Modules - net - Rodrigo Branas
Mini-Curso de Sockets no Unipê
Java 16 Jdbc
Java recursos avançados - socket connection
Protocolo MQTT - Redes de Computadores
Quebrando o monolito com microserviços - TDC 2017
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
Workshop Microservices - Construindo APIs RESTful com Spring Boot
OWASP AppSec 2010 BRAZIL Information Extraction Art of Testing Network Periph...
Fundamentos de Sockets
Fundamentos de Sockets
GUJavaSC - Combinando AngularJS com Java EE
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
QCon 2015 - Combinando AngularJS com Java EE
Servlets e JSP
Camada de transporte parte1
Informática Windows com questões de cincurso publico
2016/08/19 - Uma visão geral da AWS para desenvolvedores
Desenvolvimento de um CRUD utilizando Stored Procedure
Anúncio

Sockets java

  • 1. Implementando comunicação em JAVA via Sockets Alcides Calsavara - alcides@ppgia.pucpr.br Leonardo R. Nunes - leonardo@sumersoft.com
  • 2. Sockets Utilizado para comunicação entre processos; Compreendendo Sockets - diagramas: sockets.pdf socketsgeral.pdf
  • 3. Sockets Mecanismo básico de comunicação sobre IP Fornece três modos de acesso: Modo orientado a conexão (connection-oriented): Socket, ServerSocket; Modo orientado a datagrama (datagram-oriented): DatagramSocket, MulticastSocket; Acesso a dados IP de baixo nível (raw ip data): SocketImpl
  • 4. Modo orientado a conexão (connection-oriented) Funciona sobre o protocolo TCP/IP Serviços confiáveis: Sem perdas de dados na rede; Garantia de ordem dos pacotes; “ Data streams” podem ser utilizados Desvantagens: É mais lento que o modo orientado a datagrama; Comportamento servidor diferente do comportamento cliente;
  • 5. Ações para implementar um socket cliente 1 - Abrir a conexão: import java.io.* ; // streams import java.net.* ; // sockets Socket clientSocket = new Socket (“www.javasoft.com”, 80);
  • 6. Ações para implementar um socket cliente 2 - Pegando os streams de entrada e saída: DataInputStream inbound = new DataInputStream ( clientSocket .getInputStream( ) ); DataOutputStream outbound = new DataOutputStream ( clientSocket .getOutputStream( ) );
  • 7. Ações para implementar um socket cliente 3 - Utilizando os streams de entrada e saída: outbound .writeInt( 3 ); outbound .writeUTF( “Hello” ); int k = inbound .readInt( ); String s = inbound .readUTF() ;
  • 8. Ações para implementar um socket cliente 4 – Fechando os streams de entrada e saída: inbound .close () ; outbound .close () ; 5 – Fechando o socket: clientSocket .close() ;
  • 9. Ações para implementar um socket servidor 1 - Criar o server socket: ServerSocket serverSocket = new ServerSocket (80, 5); 2 - Aguardar conexoes de clientes: Socket clientSocket = serverSocket .accept ();
  • 10. Ações para implementar um socket servidor 3 - Criar streams de entrada e saída do cliente: DataInputStream inbound = new DataInputStream ( clientSocket .getInputStream( ) ) ; DataOutputStream outbound = new DataOutputStream ( clientSocket .getOutputStream( ) ) ;
  • 11. Ações para implementar um socket servidor 4 - Conversando com o cliente: int k = inbound .readInt( ); String s = inbound .readUTF() ; outbound .writeInt( 3 ); outbound .writeUTF( “Hello” );
  • 12. Ações para implementar um socket servidor 5 - Fechando streams e socket cliente: inbound .close () ; outbound .close () ; clientSocket .close() ; 6 - Fechando o socket servidor: serverSocket .close() ;
  • 13. Modo orientado a conexão - features Possibilidade de sockets unidirecional: socket.shutdownInput(); socket.shutdownOutput(); Implementações de alto nível para protocolos como http, etc...
  • 14. Modo orientado a datagrama (datagram-oriented) Funciona sobre o protocolo UDP/IP Serviços não confiáveis: Mensagens podem ser perdidas; Ordem das mensagens não garantida; Cada mensagem é um datagrama: [sender, receiver, contents] Vantagem: É muito mais rápido que o modo orientado a conexão;
  • 15. Utilizando datagramas (sender side) 1 - Criação do socket cliente: // sender socket doesn’t need // a special port number DatagramSocket clientSocket = new DatagramSocket () ;
  • 16. Utilizando datagramas (sender side) 2 - Criando e enviando o datagrama: InetAddress addr=InetAddress.getByName (“www.javasoft.com”) ; String toSend = “ That’s my question! ” ; byte[] buffer = toSend.getBytes() ; // datagram to receiver’s port 4545 DatagramPacket question = new DatagramPacket (buffer, buffer.length, addr, 4545) ; clientSocket .send ( question ) ;
  • 17. Utilizando datagramas (sender side) 3 - Recebendo e abrindo uma resposta: DatagramPacket answer = new DatagramPacket (new byte[512], 512); clientSocket .receive ( answer ) ; System.out.println ( answer .getData() + “\n” + answer .getLength() + “\n” + answer .getAddress() + “\n” + answer .getPort() ) ;
  • 18. Utilizando datagramas (sender side) 4 - Fechando o socket clientSocket .close() ;
  • 19. Utilizando datagramas (receiver side) 1 - Criando um socket servidor: // listens on port 4545 DatagramSocket serverSocket = new DatagramSocket (4545) ;
  • 20. Utilizando datagramas (receiver side) 2 - Recebendo um datagrama: DatagramPacket question = new DatagramPacket (new byte[512], 512) ; serverSocket .receive ( question ) ;
  • 21. Utilizando datagramas (receiver side) 3 - Enviando o datagrama resposta: String toSend = “ That’s the answer ! ” ; byte[] buffer = toSend.getBytes() ; DatagramPacket answer = new DatagramPacket (buffer, buffer.length, question .getAddress()/*sender info*/, question .getPort()/*sender info*/); serverSocket .send ( answer ) ;
  • 22. Utilizando datagramas (receiver side) 4 - Fechando o socket servidor: serverSocket .close() ;
  • 23. Modo orientado a datagama – Multicast Um grupo “Multicast” é especificado por um endereço IP de classe “D” (224.0.0.0 até 239.255.255.255, inclusive) e uma porta UDP. O endereço 224.0.0.0 é reservado e não deve ser usado. MulticastSocket: InetAddress group = InetAddress.getByName("228.5.6.7"); MulticastSocket s = new MulticastSocket(6789); s. joinGroup (group); // Envia e recebe mensagens. s. leaveGroup (group);
  • 24. Sockets sobre IP - TCP e UDP Algumas configurações: Timeout do Sistema Operacional; Utilização de buffers; KeepAlive; etc ...
  • 25. Acesso a dados IP de baixo nível Java possibilita acesso a algumas configurações ip, mas não permite raw sockets. SocketImplFactory SocketImpl SocketOptions
  • 26. Principais novidades do J2SE v1.4 Suporte à IPv6 SocketChannel Stream-oriented connecting sockets. Operações assíncronas Maior controle de execução e recursos (possibilidade de accept não bloqueante) Suporte a Secure Socket Layer Maiores detalhes: %JAVA_HOME%/docs/guide/net/enhancements14.html