Instituto Federal Catarinense - Campus Ibirama
Técnico em Informática Integrado ao Ensino Médio
Administração
Nome da Disciplina
de Redes
Sockets
Comunicação interprocesso com Java
Prof. Dr. Marcos Yuzuru de Oliveira Camada
xxxx@[Link]
Sumário
● Introdução;
● Camada de Transporte;
● Socket;
● Socket TCP;
● Socket UDP;
Instituto Federal Catarinense - Campus Catu 2
Introdução
3
Introdução
● A linguagem Java disponibiliza um conjunto de recursos de rede predefinidas que
facilitam o desenvolvimento de aplicativos com base na Internet e Web;
● Este recurso permite uma aplicativo interagir com outro aplicativo em qualquer lugar
na Internet;
● O principal pacote Java com recursos para Internet é o ;
● A comunicação pode ser baseada em fluxo de dados ou em pacotes;
● O fluxo de dados ocorre em serviço orientado a conexão e o protocolo utilizado é o
TCP (Transmission Control Protocol);
● Já o fluxo em pacotes ocorre em serviço não orientado a conexão, utilizando o
protocolo UDP (User Datagram Protocol);
Instituto Federal Catarinense - Campus Catu 4
Camada de Transporte
5
Camada de Transporte
● Fornece a comunicação lógica entre processo de aplicação entre hospedeiros (host)
diferentes;
SO do Host 1 Internet SO do Host 2
Aplicação Aplicação
Segmento
Transporte Transporte
Rede Rede
Enlace Enlace
Host 1 Física Física
Host 2
Instituto Federal Catarinense - Campus Catu 6
Tipos de Protocolos da Camada de Transporte
● Transmission Control Protocol (TCP)
● User Datagram Protocol (UDP) ○ Serviço confiável;
○ Serviço não confiável; ○ Orientado para conexão;
○ Não orientado para conexão; ○ Controle de congestionamento;
○ Sem controle de congestionamento; ○ Há o controle de estados da conexão
○ Não há o controle de estados da conexão; ○ Tamanho do cabeçalho: 20 bytes
○ Tamanho do cabeçalho: 8 bytes;
Cada porta é um número de 16 bits (0 a 65535), os números de porta de 0 a 1023 são denominados de portas bem
conhecida. São reservados pelo SO.
Instituto Federal Catarinense - Campus Catu 7
Inversão do Número de Porta
Instituto Federal Catarinense - Campus Catu 8
Protocolos de Transporte Utilizados pelas Principais Aplicações
Instituto Federal Catarinense - Campus Catu 9
Socket
10
Consideração
● Deve-se tratar possíveis erros no processo de comunicação.
Instituto Federal Catarinense - Campus Catu 11
O que é um Socket
● Atua na Camada de Transporte e na Camada de Aplicação;
● Há a participação do Sistema Operacional;
Instituto Federal Catarinense - Campus Catu 12
O que é um Socket
● É uma extremidade de um link de comunicação bidirecional entre dois programas em execução
na rede ou no próprio de computador;
● Um socket é vinculado a um número de porta para que a camada TCP possa identificar o
aplicativo para o qual os dados devem ser enviados;
● O ponto final é uma combinação de um endereço IP e um número de porta;
● Segue o modelo de Cliente e Servidor;
Cliente Servidor
[Link] [Link]
Instituto Federal Catarinense - Campus Catu 13
Socket TCP
14
Servidor
● Aguarda conexão com algum cliente a partir ● Cria-se o canal de comunicação e escreve-se
de uma porta; nele;
# Código ([Link]) # Código ([Link])
1 ... 1 ...
2 ServerSocket servidor = new ServerSocket(VALOR_DA_PORTA); 2 ObjectOutputStream saida = new ObjectOutputStream([Link]());
3 ... 3 [Link]();
4 [Link](new Date());
5 ...
● Cria-se uma conexão com algum cliente
● Finaliza a Conexão
# Código ([Link])
1 ...
# Código ([Link])
2 Socket cliente = [Link]();
3 ... 1 ...
2 [Link]();
3 [Link]();
4 ...
Instituto Federal Catarinense - Campus Catu 15
Cliente
● Estabelece conexão com um servidor em um ● Encerra conexão
determinado endereço e porta; # Código ([Link])
# Código ([Link]) 1 ...
2 [Link]();
3 ...
1 ...
2 Socket cliente = new Socket("endereço",PORTA);
3 ...
● Estabelece um canal de comunicação e recebe
algo do servidor (neste caso, um objeto Date);
# Código ([Link])
1 ...
2 Date dataAtual = (Date)[Link]();
3
4 [Link]("Data recebuda do servidor:
5 "+[Link]());
6 ...
Instituto Federal Catarinense - Campus Catu 16
Socket UDP
17
Servidor ● Cria-se um datagrama
# Código ([Link])
● Cria-se um socket UDP:
1 ...
2 DatagramPacket pacote = new DatagramPacket(mensagem,
# Código ([Link]) 3 [Link]);
...
1 ...
2 DatagramSocket servidor = new DatagramSocket(12346);
3 ... ● Recebe-se o datagrama
# Código ([Link])
● Cria-se um buffer para o datagrama a ser 1 ...
2 [Link](pacote);
recebida do cliente; 3 ...
# Código ([Link])
1 ...
● Finaliza a conexão
2 byte[] mensagem = new byte[256];
3 ... # Código ([Link])
1 ...
2 [Link]();
3 ...
Instituto Federal Catarinense - Campus Catu 18
Cliente
● Cria-se um socket UDP ● Envia o datagrama
# Código ([Link])
# Código ([Link])
1 ...
1 ... 2 [Link](pacote);
2 DatagramSocket cliente = new DatagramSocket(); 3 ...
3 ...
● Cria-se uma mensagem e a empacota em um ● Finaliza o socket
datagrama;
# Código ([Link])
# Código ([Link])
1 ...
2 [Link]();
1 ... 3 ...
2 String mensagem = "Ola todos!";
3
DatagramPacket pacote = new
DatagramPacket([Link](),
[Link]().length,
[Link]("localhost"), 12346);
...
Instituto Federal Catarinense - Campus Catu 19
Referências
20
Referências
● [Link]
_tr_sl=en&_x_tr_tl=pt&_x_tr_hl=pt&_x_tr_pto=tc
● [Link]
Instituto Federal Catarinense - Campus Catu 21