SlideShare uma empresa Scribd logo
1 de 9
Baixar para ler offline
Socket

Mario Jorge Pereira
mariojp@gmail.com
Pacote java.net
O pacote java.net contém classes para implementar
comunicação através da rede
Fáceis de usar. Semelhante à criação de arquivos:
Socket sock = new Socket("www.x.com", 80);
PrintWriter os = new PrintWriter(new
OutputStreamWriter(sock.getOutputStream()));
BufferedReader is = new BufferedReader(new
InputStreamReader(sock.getInputStream());
os.println("GET / HTTP/1.0nn");
os.flush();
String linha = "";
while ((linha = is.readLine()) != null) {
System.out.println(linha);
} // ... feche o socket com sock.close();
TCP/IP
A comunicação via protocolo TCP (Transfer Control Protocol),
confiável, é suportada pelas classes
Socket (soquete de dados)
ServerSocket (soquete do servidor).
A comunicação via UDP (Unreliable Datagram Protocol),
não-confiável, é suportada pelas classes
DatagramSocket (soquete de dados UDP),
DatagramPacket (pacote UDP)
MulticastSocket (soquete UDP para difusão).
Endereçamento
InetAddress (representa um endereço na Internet)
URL (representa uma URL)
URL
Representa uma URL
Principais métodos
openStream() obtém um InputStream para os dados
openConnection(): retorna um objeto URLConnection que contém
métodos para ler o cabeçalho dos dados
getContent(): retorna os dados diretamente como Object se
conteúdo for conhecido (texto, imagens, etc.)
Para imprimir a página HTML de um site:
try {
URL url = new URL("http://www.site.com");
InputStreamReader reader = new
InputStreamReader(url.openStream());
BufferedReader br = new BufferedReader(reader);
String linha = "";
while ( (linha = br.readLine()) != null) {
System.out.println(linha); }
} catch (MalformedURLException e) { ... }
InetAddress
Representa um endereço Internet

Principais métodos estáticos construtores
getLocalHost() retorna InetAddress
getByName(String host) retorna InetAddress
Principais métodos de instância
getHostAddress() retorna String com IP do
InetAddress
getHostName() retorna String com nome no
InetAddress
Para descobrir o IP e nome da máquina local:
InetAddress address = InetAddress.getLocalHost();
String ip = address.getHostAddress();
String nome = address.getHostName();
Socket
Um dos lados de uma conexão bidirecional TCP
Principais métodos servem para obter fluxos de entrada e
saída
getInputStream()
getOutputStream()
close()
Exemplo:
InetAddress end = InetAddress.getByName("lab21Maq01.fib");
Socket con = new Socket(end, 80);
InputStream dados = con.getInputStream();
OutputStream comandos = con.getOutputStream();

Depois de obtido os fluxos, basta ler ou enviar dados
Socket
Para ler ou gravar caracteres ao invés de bytes, pode-se
decorar os fluxos obtidos de um socket com as classes
Reader e Writer:
Socket con = new Socket("maquina", 4444);
Reader r = new InputStreamReader(con.getInputStream());
Writer w = new
OutputStreamWriter( con.getOutputStream());
// Seu codigo
con.close();
ServerSocket
Com ServerSocket pode-se implementar um servidor que fica
escutando uma porta a espera de um cliente
Principal método
accept(): aceita a conexão e retorna o seu socket
Exemplo de servidor dedicado:
ServerSocket escuta = new ServerSocket(80);
while(true) {
Socket cliente = escuta.accept(); // espera
InputStream comandos = cliente.getInputStream();
OutputStream dados = cliente.getOutputStream();
// ... use os dados
cliente.close();
}
Exercícios
1. Escreva um programa que descubra e imprima o número
IP da sua máquina
2. Escreva um programa que
Conecte-se na porta HTTP (geralmente 80) de um
servidor conhecido
Envie o comando: "GET / HTTP/1.0nn"
Imprima o resultado
3. Servidor dedicado: escreva um servidor simples que
responda ao cliente com um eco do que foi enviado.

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Java servlets
Java servletsJava servlets
Java servlets
 
Controller dalam Laravel (Pemrograman Web II)
Controller dalam Laravel (Pemrograman Web II)Controller dalam Laravel (Pemrograman Web II)
Controller dalam Laravel (Pemrograman Web II)
 
Java basic
Java basicJava basic
Java basic
 
JDBC – Java Database Connectivity
JDBC – Java Database ConnectivityJDBC – Java Database Connectivity
JDBC – Java Database Connectivity
 
Java Streams
Java StreamsJava Streams
Java Streams
 
Java packages
Java packagesJava packages
Java packages
 
Object oriented programming dengan php
Object oriented programming dengan phpObject oriented programming dengan php
Object oriented programming dengan php
 
Direccionamiento ip
Direccionamiento ipDireccionamiento ip
Direccionamiento ip
 
Java data types
Java data typesJava data types
Java data types
 
Exception handling
Exception handlingException handling
Exception handling
 
Java multi threading
Java multi threadingJava multi threading
Java multi threading
 
Serialization/deserialization
Serialization/deserializationSerialization/deserialization
Serialization/deserialization
 
Погружение в Dart
Погружение в DartПогружение в Dart
Погружение в Dart
 
Presentación tcp y udp
Presentación tcp y udpPresentación tcp y udp
Presentación tcp y udp
 
Spring jdbc
Spring jdbcSpring jdbc
Spring jdbc
 
09. Java Methods
09. Java Methods09. Java Methods
09. Java Methods
 
Java practical
Java practicalJava practical
Java practical
 
Introduction To Java.
Introduction To Java.Introduction To Java.
Introduction To Java.
 
Routing Protocol
Routing ProtocolRouting Protocol
Routing Protocol
 
Networking in Java
Networking in JavaNetworking in Java
Networking in Java
 

Destaque (11)

Sockets : Introdução
Sockets : IntroduçãoSockets : Introdução
Sockets : Introdução
 
Labs Jogos Java
Labs Jogos JavaLabs Jogos Java
Labs Jogos Java
 
Exercicios - Java Swing
Exercicios - Java SwingExercicios - Java Swing
Exercicios - Java Swing
 
Java www
Java wwwJava www
Java www
 
Windows - Formulários
Windows - FormuláriosWindows - Formulários
Windows - Formulários
 
Socket
SocketSocket
Socket
 
Java recursos avançados - socket connection
Java   recursos avançados - socket connectionJava   recursos avançados - socket connection
Java recursos avançados - socket connection
 
Java Swing
Java SwingJava Swing
Java Swing
 
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
 
Socket
SocketSocket
Socket
 
Curso de Java #05 - Swing e JavaFX
Curso de Java #05 - Swing e JavaFXCurso de Java #05 - Swing e JavaFX
Curso de Java #05 - Swing e JavaFX
 

Semelhante a Socket

Redes 1 - Sockets em C#
Redes 1 - Sockets em C#Redes 1 - Sockets em C#
Redes 1 - Sockets em C#Marcelo Charan
 
Java Comunicação Serial
Java Comunicação SerialJava Comunicação Serial
Java Comunicação SerialAndrei Bastos
 
1089335456 paper 4 sockets em java
1089335456 paper 4   sockets em java1089335456 paper 4   sockets em java
1089335456 paper 4 sockets em javajosealcides2005
 
Redes De Computadores Internet
Redes De Computadores   InternetRedes De Computadores   Internet
Redes De Computadores InternetMario Bittencourt
 
Sistemas de Comunicação em Tempo Real
Sistemas de Comunicação em Tempo RealSistemas de Comunicação em Tempo Real
Sistemas de Comunicação em Tempo RealDev PP
 
Ac.m4 tarefa video-emil
Ac.m4 tarefa video-emilAc.m4 tarefa video-emil
Ac.m4 tarefa video-emilfantic3o
 
Python e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestPython e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestEdson Celio
 
Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05thomasdacosta
 
Introdução a Redes de Computadores - 8 - Nível de Transporte - Sockets
Introdução a Redes de Computadores - 8 - Nível de Transporte - SocketsIntrodução a Redes de Computadores - 8 - Nível de Transporte - Sockets
Introdução a Redes de Computadores - 8 - Nível de Transporte - SocketsAndre Peres
 
M4 tarefa video
M4 tarefa videoM4 tarefa video
M4 tarefa videogonxalox
 
I Pv6 Final 2
I Pv6 Final 2I Pv6 Final 2
I Pv6 Final 2ptic433
 
Compartilhando Internet Via Rádio entre m servidor linux e clientes windows
Compartilhando Internet Via Rádio entre m servidor linux e clientes windowsCompartilhando Internet Via Rádio entre m servidor linux e clientes windows
Compartilhando Internet Via Rádio entre m servidor linux e clientes windowsFelipe Santos
 

Semelhante a Socket (20)

Fundamentos de Sockets
Fundamentos de SocketsFundamentos de Sockets
Fundamentos de Sockets
 
Fundamentos de Sockets
Fundamentos de SocketsFundamentos de Sockets
Fundamentos de Sockets
 
Redes 1 - Sockets em C#
Redes 1 - Sockets em C#Redes 1 - Sockets em C#
Redes 1 - Sockets em C#
 
Java Comunicação Serial
Java Comunicação SerialJava Comunicação Serial
Java Comunicação Serial
 
Java network-sockets-etc
Java network-sockets-etcJava network-sockets-etc
Java network-sockets-etc
 
1089335456 paper 4 sockets em java
1089335456 paper 4   sockets em java1089335456 paper 4   sockets em java
1089335456 paper 4 sockets em java
 
Redes De Computadores Internet
Redes De Computadores   InternetRedes De Computadores   Internet
Redes De Computadores Internet
 
Sistemas de Comunicação em Tempo Real
Sistemas de Comunicação em Tempo RealSistemas de Comunicação em Tempo Real
Sistemas de Comunicação em Tempo Real
 
44 sockets[1]
44 sockets[1]44 sockets[1]
44 sockets[1]
 
Ac.m4 tarefa video-emil
Ac.m4 tarefa video-emilAc.m4 tarefa video-emil
Ac.m4 tarefa video-emil
 
Python e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestPython e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentest
 
Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05
 
Introdução a Redes de Computadores - 8 - Nível de Transporte - Sockets
Introdução a Redes de Computadores - 8 - Nível de Transporte - SocketsIntrodução a Redes de Computadores - 8 - Nível de Transporte - Sockets
Introdução a Redes de Computadores - 8 - Nível de Transporte - Sockets
 
threads e-sockets-em-java
 threads e-sockets-em-java threads e-sockets-em-java
threads e-sockets-em-java
 
Ficheiros em JAVA
Ficheiros em JAVAFicheiros em JAVA
Ficheiros em JAVA
 
M4 tarefa video
M4 tarefa videoM4 tarefa video
M4 tarefa video
 
Lab 06 ping_com_udp
Lab 06 ping_com_udpLab 06 ping_com_udp
Lab 06 ping_com_udp
 
I Pv6 Final 2
I Pv6 Final 2I Pv6 Final 2
I Pv6 Final 2
 
servlet-respostas
servlet-respostasservlet-respostas
servlet-respostas
 
Compartilhando Internet Via Rádio entre m servidor linux e clientes windows
Compartilhando Internet Via Rádio entre m servidor linux e clientes windowsCompartilhando Internet Via Rádio entre m servidor linux e clientes windows
Compartilhando Internet Via Rádio entre m servidor linux e clientes windows
 

Mais de Mario Jorge Pereira

Educacao e Inteligencia Artificial Generativa
Educacao e Inteligencia Artificial GenerativaEducacao e Inteligencia Artificial Generativa
Educacao e Inteligencia Artificial GenerativaMario Jorge Pereira
 
Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosMario Jorge Pereira
 
Guia Rápido de Referência Java
Guia Rápido de Referência JavaGuia Rápido de Referência Java
Guia Rápido de Referência JavaMario Jorge Pereira
 
Android por onde começar? Mini Curso Erbase 2015
Android por onde começar? Mini Curso Erbase 2015 Android por onde começar? Mini Curso Erbase 2015
Android por onde começar? Mini Curso Erbase 2015 Mario Jorge Pereira
 
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Hands-On Java web passando por  Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...Hands-On Java web passando por  Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...Mario Jorge Pereira
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Mario Jorge Pereira
 

Mais de Mario Jorge Pereira (20)

Educacao e Inteligencia Artificial Generativa
Educacao e Inteligencia Artificial GenerativaEducacao e Inteligencia Artificial Generativa
Educacao e Inteligencia Artificial Generativa
 
Html
HtmlHtml
Html
 
HTTP
HTTPHTTP
HTTP
 
Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e Algoritmos
 
Guia rapido java v2
Guia rapido java v2Guia rapido java v2
Guia rapido java v2
 
Guia Rápido de Referência Java
Guia Rápido de Referência JavaGuia Rápido de Referência Java
Guia Rápido de Referência Java
 
Android por onde começar? Mini Curso Erbase 2015
Android por onde começar? Mini Curso Erbase 2015 Android por onde começar? Mini Curso Erbase 2015
Android por onde começar? Mini Curso Erbase 2015
 
Java Nuvem Appengine
Java Nuvem AppengineJava Nuvem Appengine
Java Nuvem Appengine
 
Mini curso Android
Mini curso AndroidMini curso Android
Mini curso Android
 
Java Server Faces
Java Server FacesJava Server Faces
Java Server Faces
 
Minicurso Android
Minicurso AndroidMinicurso Android
Minicurso Android
 
Android, por onde começar?
Android, por onde começar?Android, por onde começar?
Android, por onde começar?
 
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Hands-On Java web passando por  Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...Hands-On Java web passando por  Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
 
Android e Cloud Computing
Android e Cloud ComputingAndroid e Cloud Computing
Android e Cloud Computing
 
RMI (Remote Method Invocation)
RMI (Remote Method Invocation) RMI (Remote Method Invocation)
RMI (Remote Method Invocation)
 
Java e Cloud Computing
Java e Cloud ComputingJava e Cloud Computing
Java e Cloud Computing
 
GUI - Eventos
GUI - EventosGUI - Eventos
GUI - Eventos
 
GUI Aplicações Gráficas
GUI Aplicações Gráficas GUI Aplicações Gráficas
GUI Aplicações Gráficas
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java
 
Erros comuns em java
Erros comuns em javaErros comuns em java
Erros comuns em java
 

Socket

  • 2. Pacote java.net O pacote java.net contém classes para implementar comunicação através da rede Fáceis de usar. Semelhante à criação de arquivos: Socket sock = new Socket("www.x.com", 80); PrintWriter os = new PrintWriter(new OutputStreamWriter(sock.getOutputStream())); BufferedReader is = new BufferedReader(new InputStreamReader(sock.getInputStream()); os.println("GET / HTTP/1.0nn"); os.flush(); String linha = ""; while ((linha = is.readLine()) != null) { System.out.println(linha); } // ... feche o socket com sock.close();
  • 3. TCP/IP A comunicação via protocolo TCP (Transfer Control Protocol), confiável, é suportada pelas classes Socket (soquete de dados) ServerSocket (soquete do servidor). A comunicação via UDP (Unreliable Datagram Protocol), não-confiável, é suportada pelas classes DatagramSocket (soquete de dados UDP), DatagramPacket (pacote UDP) MulticastSocket (soquete UDP para difusão). Endereçamento InetAddress (representa um endereço na Internet) URL (representa uma URL)
  • 4. URL Representa uma URL Principais métodos openStream() obtém um InputStream para os dados openConnection(): retorna um objeto URLConnection que contém métodos para ler o cabeçalho dos dados getContent(): retorna os dados diretamente como Object se conteúdo for conhecido (texto, imagens, etc.) Para imprimir a página HTML de um site: try { URL url = new URL("http://www.site.com"); InputStreamReader reader = new InputStreamReader(url.openStream()); BufferedReader br = new BufferedReader(reader); String linha = ""; while ( (linha = br.readLine()) != null) { System.out.println(linha); } } catch (MalformedURLException e) { ... }
  • 5. InetAddress Representa um endereço Internet Principais métodos estáticos construtores getLocalHost() retorna InetAddress getByName(String host) retorna InetAddress Principais métodos de instância getHostAddress() retorna String com IP do InetAddress getHostName() retorna String com nome no InetAddress Para descobrir o IP e nome da máquina local: InetAddress address = InetAddress.getLocalHost(); String ip = address.getHostAddress(); String nome = address.getHostName();
  • 6. Socket Um dos lados de uma conexão bidirecional TCP Principais métodos servem para obter fluxos de entrada e saída getInputStream() getOutputStream() close() Exemplo: InetAddress end = InetAddress.getByName("lab21Maq01.fib"); Socket con = new Socket(end, 80); InputStream dados = con.getInputStream(); OutputStream comandos = con.getOutputStream(); Depois de obtido os fluxos, basta ler ou enviar dados
  • 7. Socket Para ler ou gravar caracteres ao invés de bytes, pode-se decorar os fluxos obtidos de um socket com as classes Reader e Writer: Socket con = new Socket("maquina", 4444); Reader r = new InputStreamReader(con.getInputStream()); Writer w = new OutputStreamWriter( con.getOutputStream()); // Seu codigo con.close();
  • 8. ServerSocket Com ServerSocket pode-se implementar um servidor que fica escutando uma porta a espera de um cliente Principal método accept(): aceita a conexão e retorna o seu socket Exemplo de servidor dedicado: ServerSocket escuta = new ServerSocket(80); while(true) { Socket cliente = escuta.accept(); // espera InputStream comandos = cliente.getInputStream(); OutputStream dados = cliente.getOutputStream(); // ... use os dados cliente.close(); }
  • 9. Exercícios 1. Escreva um programa que descubra e imprima o número IP da sua máquina 2. Escreva um programa que Conecte-se na porta HTTP (geralmente 80) de um servidor conhecido Envie o comando: "GET / HTTP/1.0nn" Imprima o resultado 3. Servidor dedicado: escreva um servidor simples que responda ao cliente com um eco do que foi enviado.