redes de computadores i
DESCRIPTION
Redes de Computadores I. Prof. Mateus Raeder. Universidade do Vale do Rio dos Sinos - São Leopoldo -. Programação com sockets. Uma interface ( uma “ porta ”), local ao hospedeiro , criada por e pertencente à aplicação, e controlado pelo SO, através da qual um processo de - PowerPoint PPT PresentationTRANSCRIPT
Redes de Computadores I
Prof. Mateus Raeder
Universidade do Vale do Rio dos Sinos- São Leopoldo -
Redes de Computadores I – Prof. Mateus Raeder
Programação com sockets
• Meta: aprender construir aplicação cliente/servidor que se comunica usando sockets.
Uma interface (uma “porta”),local ao hospedeiro, criadapor e pertencente à aplicação,e controlado pelo SO, atravésda qual um processo deaplicação pode tanto enviarcomo receber mensagensde/para outro processo deaplicação(remoto ou local)
Redes de Computadores I – Prof. Mateus Raeder
Programação com sockets usando TCP
• Socket: uma porta entre o processo de aplicação e um protocolo de transporte fim-a-fim (UDP ou TCP)
• Serviço TCP: transferência confiável de bytes de um processo para outro
process
TCP withbuffers,
variables
socket
controlled byapplicationdeveloper
controlled byoperating
system
host orserver
process
TCP withbuffers,
variables
socket
controlled byapplicationdeveloper
controlled byoperatingsystem
host orserver
internet
Redes de Computadores I – Prof. Mateus Raeder
Cliente deve contactar o servidor:– processo servidor já deve
estar executando antes de ser contactado
– servidor deve ter criado socket (porta) que aceita o contato do cliente
Cliente contata o servidor:– criando um socket TCP– especificando endereço IP e
número da porta do processo servidor
Quando o cliente cria o socket: cliente TCP estabelece conexão com o TCP do servidor
Programação com sockets usando TCP
TCP fornece a transferência confiável,
entre o cliente e oservidor
ponto de vista da aplicação
Redes de Computadores I – Prof. Mateus Raeder
Exemplo de aplicação cliente-servidor:
• Cliente lê linha da entrada padrão (fluxo doUsuário), envia para servidor via socket (fluxo paraServidor).
• Servidor converte linha para letra maiúscula, e devolve para o cliente.
• Cliente lê linha modificada do socket (fluxo doServidor), imprime-a
• Input strem: sequencia de bytes para dentro do processo
• Output stream: sequencia de bytes para fora do processo
Programação com sockets usando TCP
Socket do cliente
doUsuario Para
Serv
idor
doSe
rvid
or
Redes de Computadores I – Prof. Mateus Raeder
Interações cliente/servidor com socket: TCP
Redes de Computadores I – Prof. Mateus Raeder
Exemplo: cliente Java TCP (1)
import java.io.*;
import java.net.*;
class ClienteTCP {
public static void main(String argv[]) throws Exception
{
String frase;
String fraseModificada;
BufferedReader doUsuario =
new BufferedReader(new InputStreamReader(System.in));
Socket socketCliente = new Socket(”idHosp", 6789);
DataOutputStream paraServidor =
new DataOutputStream(socketCliente.getOutputStream());
Contém classe parastreams de I/O
Contém classes parasuporte a rede
Criafluxo de entrada
Criasocket de cliente,conexão ao servidor
Criafluxo de saídaanexado ao socket
Redes de Computadores I – Prof. Mateus Raeder
Exemplo: cliente Java TCP (2)
BufferedReader doServidor =
new BufferedReader(new
InputStreamReader(socketCliente.getInputStream()));
frase = doUsuario.readLine();
paraServidor.writeBytes(frase + '\n');
fraseModificada = doServidor.readLine();
System.out.println(”Do Servidor: " + fraseModificada);
socketCliente.close();
}
}
Criafluxo de entradaligado ao socket
Envia linhaao servidor
Lê linhado servidor
Redes de Computadores I – Prof. Mateus Raeder
Exemplo: servidor Java TCP (1)
import java.io.*;
import java.net.*;
class servidorTCP {
public static void main(String argv[]) throws Exception
{
String fraseCliente;
String fFraseMaiusculas;
ServerSocket socketRecepcao = new ServerSocket(6789);
while(true) {
Socket socketConexao = socketRecepcao.accept();
BufferedReader doCliente =
new BufferedReader(new
InputStreamReader(socketConexao.getInputStream()));
Cria socketpara recepçãona porta 6789
Aguarda, no socketpara recepção, ocontato do cliente
Cria fluxo deentrada, ligadoao socket
Redes de Computadores I – Prof. Mateus Raeder
Exemplo: servidor Java TCP (2)
DataOutputStream paraCliente =
new DataOutputStream(socketConexão.getOutputStream());
fraseCliente= doCliente.readLine();
fraseEmMaiusculas= fraseCliente.toUpperCase() + '\n';
paraClient.writeBytes(fraseEmMaiusculas);
}
}
}
Cria fluxode saída, ligadoao socket
Lê linhado socket
Escreve linhapara o socket
Final do laço while.Volta ao início e aguardaconexão de outro cliente