Programação de Sockets



Documentos relacionados
socket Objetivo: aprender a construir aplicações cliente/servidor que se comunicam usando sockets

Programação de sockets com TCP

Programação de Sockets

Comunicação entre processos

Redes de Computadores II. Programação com Sockets em Python

Disciplina de Sistemas Distribuídos. Comunicação em Sistemas Distribuídos

Capítulo 2 Camada de aplicação

Capítulo 2. Camada de aplicação

Capítulo 2 Camada de aplicação

Capítulo 2 Camada de aplicação

Programação: Sockets em Java

Redes de Computadores Programação com Sockets

Capítulo 2 Camada de aplicação

Programação Paralela e Distribuída. Prof. Cidcley T. de Souza

Programação com sockets (em Java)

Mecanismos de Comunicação. Sockets em java (

PROGRAMAÇÃO COM SOCKETS

Redes de Computadores I

Capítulo 2 Camada de aplicação

Sistemas Distribuídos

Aula 30 - Sockets em Java

Sockets com Java Parte I

Infra-Estrutura de Comunicação (IF678)

Sockets em Java. Leonardo R. Nunes - leonardo@sumersoft.com. 1. Introdução. 2. Sockets TCP/IP

Programação em Rede Baseada em Java. Luiz Affonso Guedes Tópicos em Redes de Computadores Programação Distribuída

Implementando comunicação em JAVA via Sockets. Alcides Calsavara - alcides@ppgia.pucpr.br Leonardo R. Nunes - leonardo@sumersoft.

INF1013 MODELAGEM DE SOFTWARE

User Datagram Protocol

Olho por olho, e o mundo acabará cego. Mohandas Gandhi

Sistemas Distribuídos

Java 2 Standard Edition Fundamentos de

Sistemas Distribuídos Java Sockets

Sistemas Distribuídos. Coulouris Capítulo 4

UNIVERSIDADE. Sistemas Distribuídos

Infra-Estrutura de Comunicação (IF678)

Sockets. Bruno Guimarães Lucas Rossini

Um pouco do Java. Prof. Eduardo

Capítulo II Modelos de Programação Distribuída

Cliente-servidor com Sockets TCP

Redes de Computadores e a Internet

INF01018 Aula Prática 1 Cliente-Servidor e Multicast

Sockets. Introdução. Introdução. Programando para redes em Java. mecanismo de alto nível para acessar recursos na Internet.

Passagem de Mensagens

REDES DE COMPUTADORES

Programação de Sockets em C/C++

FTP FILE F TRANSFER PROTOCOL. Tópicos

REDES DE COMPUTADORES

Capítulo 7 CAMADA DE TRANSPORTE

Redes de Computadores

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Informática I. Aula Aula 22-03/07/06 1

Redes de computadores

Sistemas Distribuídos. Prof. Ricardo Ribeiro dos Santos

Relatório 1º Laboratório: O Java e os Sockets. Licenciatura: ETI Turma : ETC1 Grupo : rd3_t3_02 Data: 22/02/2010

Rede de Computadores (REC)

Redes de Computadores

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Programação com Sockets

Computação Distribuída

Aula Prática. Comunicação em SOCKTS. Disciplina: INF01151

Camada de Transporte TCP/IP e Aplicação

Capítulo 7 CAMADA DE TRANSPORTE

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho.

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP

Sockets em Ruby. Curso de Tecnologia em Redes de Computadores Programação para Redes

Redes de Computadores. Camada de Transporte

MÓDULO 8 Modelo de Referência TCP/IP

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

Sistemas Distribuídos Capítulos 2 e 3: Modelos, Arquitecturas e Revisão de Redes

Aula 2 Arquitetura de Redes. Prof. Dr. S. Motoyama

Camada de Transporte, protocolos TCP e UDP

Threads e Sockets em Java. Threads em Java. Programas e Processos

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos

CAMADA DE TRANSPORTE

Capítulo 8 - Aplicações em Redes

Redes de Computadores I Licenciatura em Eng. Informática e de Computadores 1 o Semestre, 26 de Outubro de o Teste A

Bacharelado em Ciência e Tecnologia BC Processamento da Informação Teoria Arquivos Prof. Edson Pinheiro Pimentel edson.pimentel@ufabc.edu.

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

Java : Comunicação Cliente-Servidor.

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

Rede de Computadores

Capítulo 11 - Camada de Transporte TCP/IP e de Aplicação. Associação dos Instrutores NetAcademy - Julho de Página

Transcrição:

Programação de Sockets Objetivo: aprender a construir aplicações cliente/servidor que se comunicam usando sockets Socket API introduzida no BSD4.1 UNIX, 1981 explicitamente criados, usados e liberados pelas aplicações paradigma cliente/servidor dois tipos de serviço de transporte via socket API: datagrama não confiável confiável, orientado a cadeias de bytes socket uma interface local, criada e possuída pelas aplicações, controlada pelo OS (uma porta ) na qual os processo de aplicação podem tanto enviar quanto receber mensagens de e para outro processo de aplicação (local ou remoto)

Programação de Sockets com TCP Socket: uma porta entre o processo de aplicação e o protocolo de transporte fim-a-fim (UDP ou TCP) serviço TCP: transferência confiável de bytes de um processo para outro controlado pelo criador da aplicação controlado pelo sistema operacional processo socket TCP com buffers, variáveis internet processo socket TCP com buffers, variáveis controlado pelo criador da aplicação controlado pelo sistema operacional servidor cliente

Programação de Sockets com Cliente deve contatar 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 através de: criando um socket TCP local especificando endereço IP e número da porta do processo servidor TCP Quando o cliente cria o socket: cliente TCP estabelece conexão com o TCP do servidor Quando contatado pelo cliente, o TCP do servidor cria um novo socket para o processo servidor comunicar-se com o cliente permite o servidor conversar com múltiplos clientes ponto de vista da aplicação TCP fornece a transferência confiável, em ordem de bytes ( pipe ) entre o cliente e o servidor

Programação de Sockets com TCP Exemplo de aplicação clienteservidor: cliente lê linha da entrada padrão do sistema (infromuser stream), envia para o servidor via socket (outtoserver stream) servidor lê linha do socket servidor converte linha para letras maiúsculas e envia de volta ao cliente cliente lê a linha modificada através do (infromserver stream) processo Process cliente stream de saída: seqüência de bytes para fora do processo teclado input stream output stream infromuser outtoserver monitor stream de entrada: seqüência de bytes para dentro do processo infromserver TCP socket clientsocket cliente input stream TCP socket para rede da rede

Interação Cliente/servidor: TCP Servidor (executando em hostid) Cliente cria socket, port=x, para solicitação entrante: welcomesocket = ServerSocket() TCP espera por pedido estabel. de conexão de conexão entrante connectionsocket = welcomesocket.accept() lê pedido de connectionsocket cria socket, conecta com hostid, port=x clientsocket = Socket() envia pedido usando clientsocket escreve resposta para connectionsocket fecha connectionsocket lê resposta de clientsocket fecha clientsocket

Exemplo: cliente Java (TCP) import java.io.*; import java.net.*; class TCPClient { Cria stream de entrada Cria socket cliente, conecta ao servidor Cria stream de saída ligado ao socket public static void main(string argv[]) throws Exception { String sentence; String modifiedsentence; BufferedReader infromuser = new BufferedReader(new InputStreamReader(System.in)); Socket clientsocket = new Socket("hostname", 6789); DataOutputStream outtoserver = new DataOutputStream(clientSocket.getOutputStream());

Exemplo: cliente Java (TCP), cont. Cria stream de entrada ligado ao socket BufferedReader infromserver = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); sentence = infromuser.readline(); Envia linha para o servidor Lê linha do servidor outtoserver.writebytes(sentence + '\n'); modifiedsentence = infromserver.readline(); System.out.println("FROM SERVER: " + modifiedsentence); clientsocket.close();

Exemplo: servidor Java (TCP) import java.io.*; import java.net.*; class TCPServer { Cria socket de aceitação na porta 6789 Espera, no socket de aceitação por contato do cliente Cria stream de entrada, ligado ao socket public static void main(string argv[]) throws Exception { String clientsentence; String capitalizedsentence; ServerSocket welcomesocket = new ServerSocket(6789); while(true) { Socket connectionsocket = welcomesocket.accept(); BufferedReader infromclient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));

Exemplo: servidor Java (cont) Cria stream de saída, ligado ao socket Lê linha do socket DataOutputStream outtoclient = new DataOutputStream(connectionSocket.getOutputStream()); clientsentence = infromclient.readline(); capitalizedsentence = clientsentence.touppercase() + '\n'; Escreve linha para o socket outtoclient.writebytes(capitalizedsentence); Fim do while loop, retorne e espere por outra conexão do cliente

Programaçaõ de Sockets com UDP UDP: não há conexão entre o cliente e o servidor não existe apresentação transmissor envia explicitamente endereço IP e porta de destino em cada mensagem servidor deve extrair o endereço IP e porta do transmissor de cada datagrama recebido UDP: dados transmitidos podem ser recebidos foram de ordem ou perdidos ponto de vista da aplicação UDP fornece a transferência não confiável de grupos de bytes ( datagramas ) entre o cliente e o servidor

Interação Cliente/servidor: UDP Servidor (executando hostid) Cliente cria socket, port=x, para solicitação entrante: serversocket = DatagramSocket() lê pedido de: serversocket cria socket, clientsocket = DatagramSocket() Cria, endereço (hostid, port=x, envia datagrama de pedido usando clientsocket escreve resposta para serversocket especificando endereço do host cliente e número da porta lê resposta de clientsocket fecha clientsocket

Exemplo: cliente Java (UDP) teclado monitor Saída: envia pacote (TCP envia byte stream ) processo Process cliente stream de entrada pacote UDP infromuser sendpacket receivepacket pacote UDP Entrada: recebe pacote (TCP recebe byte stream ) socket clientsocketudp cliente UDP socket para rede da rede

Exemplo: cliente Java (UDP) import java.io.*; import java.net.*; Cria stream de entrada Cria socket cliente Translada nome do host para endereço IP usando DNS class UDPClient { public static void main(string args[]) throws Exception { BufferedReader infromuser = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket clientsocket = new DatagramSocket(); InetAddress IPAddress = InetAddress.getByName("hostname"); byte[] senddata = new byte[1024]; byte[] receivedata = new byte[1024]; String sentence = infromuser.readline(); senddata = sentence.getbytes();

Exemplo: cliente Java (UDP), cont. Cria datagrama com dados a enviar, tamanho, endereço IP porta Envia datagrama para servidor Lê datagrama do servidor DatagramPacket sendpacket = new DatagramPacket(sendData, senddata.length, IPAddress, 9876); clientsocket.send(sendpacket); DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length); clientsocket.receive(receivepacket); String modifiedsentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedsentence); clientsocket.close();

Exemplo: servidor Java (UDP) import java.io.*; import java.net.*; Cria socket datagrama na porta 9876 class UDPServer { public static void main(string args[]) throws Exception { DatagramSocket serversocket = new DatagramSocket(9876); byte[] receivedata = new byte[1024]; byte[] senddata = new byte[1024]; while(true) { Cria espaço para datagramas recebidos Recebe datagram a DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length); serversocket.receive(receivepacket);

Exemplo: servidor Java, (cont.) Obtém endereço IP e número da porta do transmissor String sentence = new String(receivePacket.getData()); InetAddress IPAddress = receivepacket.getaddress(); int port = receivepacket.getport(); Cria datagrama para enviar ao cliente Escreve o datagrama para dentro do socket String capitalizedsentence = sentence.touppercase(); senddata = capitalizedsentence.getbytes(); DatagramPacket sendpacket = new DatagramPacket(sendData, senddata.length, IPAddress, port); serversocket.send(sendpacket); Termina o while loop, retorna e espera por outro datagrama

Programação de Sockets: referências tutorial sobre C-language tutorial (audio/slides): Unix Network Programming (J. Kurose), http://manic.cs.umass.edu. Tutoriais sobre Java: Socket Programming in Java: a tutorial, http://www.javaworld.com/javaworld/jw-12-1996/jw-12- sockets.html

Parte 2: Sumário Nosso estudo das aplicações está agora completo! exigências dos serviços de aplicação: confiabilidade, banda passante, atraso paradigma cliente-servidor modelo do serviço de transporte da Internet l orientado à conexão, confiável: TCP não confiável, datagramas: UDP protocolos especificos: http ftp smtp, pop3 dns programação de sockets implementação cliente/servidor usando sockets tcp, udp

Parte 2: Sumário Mais importante: características dos protocolos tipica troca de mensagens comando/resposta: cliente solicita informação ou serviço servidor responde com dados e código de status formatos das mensagens: cabeçalhos: campos que dão informações sobre os dados dados: informação sendo comunicada controle vs. dados in-band, out-of-band centralizado vs. descentralizado stateless vs. stateful transferência de mensagens confiável vs. não confiável complexidade na borda da rede segurança: autenticação