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



Documentos relacionados
Programação de Sockets

Programação de sockets com TCP

Comunicação entre processos

Programação de Sockets

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

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

Programação com sockets (em Java)

Redes de Computadores Programação com Sockets

Programação: Sockets em Java

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 Paralela e Distribuída. Prof. Cidcley T. de Souza

Capítulo 2 Camada de aplicação

Mecanismos de Comunicação. Sockets em java (

PROGRAMAÇÃO COM SOCKETS

Redes de Computadores I

INF01018 Aula Prática 1 Cliente-Servidor e Multicast

Sistemas Distribuídos

Cliente-servidor com Sockets TCP

INF1013 MODELAGEM DE SOFTWARE

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

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

Aula 30 - Sockets em Java

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

Sockets com Java Parte I

User Datagram Protocol

Java 2 Standard Edition Fundamentos de

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

Sistemas Distribuídos. Prof. Ricardo Ribeiro dos Santos

Sistemas Distribuídos Java Sockets

Capítulo 2 Camada de aplicação

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

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

Infra-Estrutura de Comunicação (IF678)

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

Sockets. Bruno Guimarães Lucas Rossini

Sistemas Operacionais:

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

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

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

Sistemas Distribuídos

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

Comunicação entre Processos

Passagem de Mensagens

Programação com Sockets

Computação Distribuída

FTP FILE F TRANSFER PROTOCOL. Tópicos

Um pouco do Java. Prof. Eduardo

Sockets e Threads em Java

UNIVERSIDADE. Sistemas Distribuídos

Comunicação via Sockets. Prof. Orlando Loques - IC/UFF. versão

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

Infra-Estrutura de Comunicação (IF678)

Orientação a Objetos

Sistemas Distribuídos. Coulouris Capítulo 4

Redes de Computadores e Aplicações

Caso 1 NetScanner Main

TROCA DE MENSAGENS SOCKETS. Comunicando processos através de SOCKETS. SOCKETS com conexão. SOCKETS sem conexão

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

Programando sistemas distribuídos com objetos distribuídos na rede TCP/IP. Prof. Me. Sérgio Carlos Portari Júnior

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

Java : Comunicação Cliente-Servidor.

Programação com Sockets TCP e UDP - Cliente. Gustavo Leitão

Capítulo 7 CAMADA DE TRANSPORTE

Bibliotecas. Apoio à Programação Distribuída. Socket. Socket. bibliotecas bibliotecas+ferramentas linguagens de programação distribuídas

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

Redes de Computadores (PPGI/UFRJ)

Redes de Computadores. Camada de Transporte

Cliente-servidor com Sockets TCP

Modelo Cliente/Servidor e Introdução a Sockets

Engenharia Elétrica Eletrônica Slides 20: TCP/IP em Winsocks 2. API do Windows para programar utilizando o protocolo TCP/IP Prof. Jean Marcelo SIMÃO

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

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

Sistemas Distribuídos

Conceitos Básicos. Conceitos Básicos. Networking. Programando para redes em Java. empregando os protocolos:

Resumo das Propriedades de UDP e de TCP

Invocação de Métodos Remotos RMI (Remote Method Invocation)

Redes de computadores

Transcrição:

Programação de Sockets Mário Meireles Teixeira. UFMA-DEINF Programação de Sockets Objetivo: aprender a construir aplicações cliente/servidor que se comunicam usando s API de Sockets: introduzida no UNIX BSD 4.1, 1981 explicitamente criados, usados e liberados pelas aplicações paradigma cliente/servidor dois tipos de serviço de transporte via s: datagrama não confiável confiável, orientado a cadeias de bytes (byte stream) Uma interface local, criada e mantida pelas aplicações, controlada pelo SO, através da qual os processos de aplicação podem tanto enviar quanto receber mensagens de 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 or 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 TCP com buffers, variáveis internet processo TCP com buffers, variáveis controlado pelo criador da aplicação controlado pelo sistema operacional host ou servidor host ou servidor Programação de Sockets com TCP Cliente deve contactar o servidor processo servidor já deve estar executando antes de ser contactado servidor deve ter criado (porta) que aceita o contato do cliente Cliente contacta o servidor: criando um TCP local especificando endereço IP e número da porta do processo servidor Quando o cliente cria o : cliente TCP estabelece conexão com o servidor Quando contactado pelo cliente, o servidor cria um novo para comunicar-se com o cliente permite que o servidor converse com múltiplos clientes ponto de vista da aplicação TCP fornece uma transferência confiável, em ordem de bytes ( pipe ), entre o cliente e o servidor

Sockets TCP (system calls) Cliente () connect() write() Servidor () bind() listen() accept() read() read() write() close() read() close() 5 Programação de Sockets com TCP Exemplo de aplicação clienteservidor: cliente lê linha da entrada padrão do sistema (stream infromuser) e envia para o servidor via (stream outtoserver); servidor lê linha do ; servidor converte linha para letras maiúsculas e envia de volta ao cliente; cliente lê a linha modificada a partir do stream infromserver; 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 cliente input stream TCP para rede da rede

Interação Cliente/Servidor: TCP Servidor Cliente cria, 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 escreve resposta para connectionsocket fecha connectionsocket cria, conecta com hostid, port=x = Socket() envia pedido usando lê resposta de fecha Exemplo: cliente Java (TCP) import java.io.*; import java.net.*; class TCPClient { stream de entrada cliente, conecta ao servidor stream de saída ligado ao public static void main(string argv[]) throws Exception { String sentence; String modifiedsentence; BufferedReader infromuser = new BufferedReader(new InputStreamReader(System.in)); Socket = new Socket("hostname", 6789); DataOutputStream outtoserver = new DataOutputStream(.getOutputStream());

Exemplo: cliente Java (TCP) stream de entrada ligado ao Envia linha para o servidor Lê linha do servidor BufferedReader infromserver = new BufferedReader(new InputStreamReader(.getInputStream())); sentence = infromuser.readline(); outtoserver.writebytes(sentence + '\n'); modifiedsentence = infromserver.readline();...cliente aguarda resposta do servidor... System.out.println("FROM SERVER: " + modifiedsentence);.close(); Exemplo: servidor Java (TCP) import java.io.*; import java.net.*; class TCPServer { de aceitação na porta 6789 Espera, no de aceitação por contato do cliente stream de entrada, ligado ao 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 (TCP) stream de saída, ligado ao Lê linha do DataOutputStream outtoclient = new DataOutputStream(connectionSocket.getOutputStream()); clientsentence = infromclient.readline(); Escreve linha para o capitalizedsentence = clientsentence.touppercase() + '\n'; outtoclient.writebytes(capitalizedsentence); Fim do while loop, retorne e espere por outra conexão do cliente Programação de Sockets com UDP UDP: não há conexão entre o cliente e o servidor não existe apresentação transmissor envia explicita- mente 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 fora de ordem ou perdidos ponto de vista da aplicação UDP fornece uma transferência não confiável de grupos de bytes ( datagramas ) entre o cliente e o servidor

Sockets UDP (system calls) Servidor () Cliente () bind() recvfrom() sendto() recvfrom() sendto() close() 13 Interação Cliente/Servidor: UDP Servidor (executando hostid) Cliente cria, port=x, para solicitação entrante: serversocket = DatagramSocket() lê pedido de: serversocket cria, = DatagramSocket() endereço (hostid, port=x), envia datagrama de pedido usando escreve resposta para serversocket especificando endereço do host cliente e número da porta lê resposta de fecha

Exemplo: cliente Java (UDP) teclado monitor processo Process cliente Saída: envia pacote (TCP envia byte stream ) stream de entrada pacote UDP infromuser sendpacket receivepacket UDP cliente pacote UDP UDP Entrada: recebe pacote (TCP recebe byte stream ) para rede da rede Exemplo: cliente Java (UDP) import java.io.*; import java.net.*; class UDPClient { public static void main(string args[]) throws Exception { stream de entrada BufferedReader infromuser = new BufferedReader(new InputStreamReader(System.in)); cliente DatagramSocket = new DatagramSocket(); Traduz hostname para InetAddress IPAddress = InetAddress.getByName("hostname"); endereço IP usando DNS byte[] senddata = new byte[1024]; byte[] receivedata = new byte[1024]; String sentence = infromuser.readline(); senddata = sentence.getbytes();

Exemplo: cliente Java (UDP) datagrama com dados a enviar, tamanho, endereço IP e porta Envia datagrama para servidor Lê datagrama do servidor DatagramPacket sendpacket = new DatagramPacket(sendData, senddata.length, IPAddress, 9876);.send(sendPacket); DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length);.receive(receivepacket); cliente aguarda resposta do servidor String modifiedsentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedsentence);.close(); Exemplo: servidor Java (UDP) import java.io.*; import java.net.*; datagram na porta 9876 espaço para datagramas recebidos Recebe datagrama 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) { DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length); serversocket.receive(receivepacket);

Exemplo: servidor Java (UDP) 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(); datagrama para enviar ao cliente Escreve o datagrama no (envia) 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