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

Table of content pada mac os
Table of content pada mac osTable of content pada mac os
Table of content pada mac osIrsal Shabirin
 
Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java
Membuat Aplikasi Chatting Client Server Dengan Pemrograman JavaMembuat Aplikasi Chatting Client Server Dengan Pemrograman Java
Membuat Aplikasi Chatting Client Server Dengan Pemrograman Javayoyomay93
 
Fungsi sum, average, max, min dan count dan cara menggunakan formulanya
Fungsi sum, average, max, min dan count dan cara menggunakan formulanyaFungsi sum, average, max, min dan count dan cara menggunakan formulanya
Fungsi sum, average, max, min dan count dan cara menggunakan formulanyaYanuar Wijatmoko
 
Cross-domain requests with CORS
Cross-domain requests with CORSCross-domain requests with CORS
Cross-domain requests with CORSVladimir Dzhuvinov
 
Java Server Faces (JSF) - Basics
Java Server Faces (JSF) - BasicsJava Server Faces (JSF) - Basics
Java Server Faces (JSF) - BasicsBG Java EE Course
 
Manajemen file windows
Manajemen file windowsManajemen file windows
Manajemen file windowsdimas wahab
 
Network programming in Java
Network programming in JavaNetwork programming in Java
Network programming in JavaTushar B Kute
 
Exploring the Xcode Build Process
Exploring the Xcode Build Process Exploring the Xcode Build Process
Exploring the Xcode Build Process DianaKhersonskaia
 
IBM 보안솔루션 앱스캔_App Scan Source Edition
IBM 보안솔루션 앱스캔_App Scan Source EditionIBM 보안솔루션 앱스캔_App Scan Source Edition
IBM 보안솔루션 앱스캔_App Scan Source Edition은옥 조
 
Pertemuan 9 preferences dan menu
Pertemuan 9 preferences dan menuPertemuan 9 preferences dan menu
Pertemuan 9 preferences dan menuheriakj
 
Testcontainers - Geekout EE 2017 presentation
Testcontainers - Geekout EE 2017 presentationTestcontainers - Geekout EE 2017 presentation
Testcontainers - Geekout EE 2017 presentationRichard North
 
Protecting Java EE Web Apps with Secure HTTP Headers
Protecting Java EE Web Apps with Secure HTTP HeadersProtecting Java EE Web Apps with Secure HTTP Headers
Protecting Java EE Web Apps with Secure HTTP HeadersFrank Kim
 
Streams in node js
Streams in node jsStreams in node js
Streams in node jsKushal Likhi
 
Knowledge Sharing : Java Servlet
Knowledge Sharing : Java ServletKnowledge Sharing : Java Servlet
Knowledge Sharing : Java ServletFahmi Jafar
 

Mais procurados (20)

Sending Email
Sending EmailSending Email
Sending Email
 
Spring Data JPA
Spring Data JPASpring Data JPA
Spring Data JPA
 
Table of content pada mac os
Table of content pada mac osTable of content pada mac os
Table of content pada mac os
 
Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java
Membuat Aplikasi Chatting Client Server Dengan Pemrograman JavaMembuat Aplikasi Chatting Client Server Dengan Pemrograman Java
Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java
 
Fungsi sum, average, max, min dan count dan cara menggunakan formulanya
Fungsi sum, average, max, min dan count dan cara menggunakan formulanyaFungsi sum, average, max, min dan count dan cara menggunakan formulanya
Fungsi sum, average, max, min dan count dan cara menggunakan formulanya
 
Cross-domain requests with CORS
Cross-domain requests with CORSCross-domain requests with CORS
Cross-domain requests with CORS
 
Introducing Akka
Introducing AkkaIntroducing Akka
Introducing Akka
 
Java Server Faces (JSF) - Basics
Java Server Faces (JSF) - BasicsJava Server Faces (JSF) - Basics
Java Server Faces (JSF) - Basics
 
Manajemen file windows
Manajemen file windowsManajemen file windows
Manajemen file windows
 
Network programming in Java
Network programming in JavaNetwork programming in Java
Network programming in Java
 
Materi CSS Dasar
Materi CSS DasarMateri CSS Dasar
Materi CSS Dasar
 
Exploring the Xcode Build Process
Exploring the Xcode Build Process Exploring the Xcode Build Process
Exploring the Xcode Build Process
 
IBM 보안솔루션 앱스캔_App Scan Source Edition
IBM 보안솔루션 앱스캔_App Scan Source EditionIBM 보안솔루션 앱스캔_App Scan Source Edition
IBM 보안솔루션 앱스캔_App Scan Source Edition
 
Pertemuan 9 preferences dan menu
Pertemuan 9 preferences dan menuPertemuan 9 preferences dan menu
Pertemuan 9 preferences dan menu
 
Testcontainers - Geekout EE 2017 presentation
Testcontainers - Geekout EE 2017 presentationTestcontainers - Geekout EE 2017 presentation
Testcontainers - Geekout EE 2017 presentation
 
Building Netty Servers
Building Netty ServersBuilding Netty Servers
Building Netty Servers
 
SWTBot Tutorial
SWTBot TutorialSWTBot Tutorial
SWTBot Tutorial
 
Protecting Java EE Web Apps with Secure HTTP Headers
Protecting Java EE Web Apps with Secure HTTP HeadersProtecting Java EE Web Apps with Secure HTTP Headers
Protecting Java EE Web Apps with Secure HTTP Headers
 
Streams in node js
Streams in node jsStreams in node js
Streams in node js
 
Knowledge Sharing : Java Servlet
Knowledge Sharing : Java ServletKnowledge Sharing : Java Servlet
Knowledge Sharing : Java Servlet
 

Destaque (12)

Threads
ThreadsThreads
Threads
 
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.