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



Documentos relacionados
Sistemas de Operação Sockets

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

Aula de Socket. Rafael De Tommaso do Valle

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

Modelo Cliente/Servidor e Introdução a Sockets

sockets interprocess communication Taisy Weber

Um Tutorial sobre Sockets Parte I

06/10/2015. Modelo TCP/IP Camada de Transporte DISCIPLINA: TECNOLOGIA DE REDES DE COMPUTADORES. UDP User Datagram Protocol. UDP User Datagram Protocol

Programação TCP/IP (sockets)

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

Comunicação entre Processos

INF01018 Aula Prática 1 Cliente-Servidor e Multicast

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

Servidor UDP. Programação Sockets Volnys Bernal. Servidor UDP Resumo das Chamadas UDP. Resumo de Chamadas UDP. Resumo de Chamadas UDP

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

MC823 Laboratório de Teleprocessamento e Redes

Introdução à Programação com Sockets. Fernando Jorge Silveira Filho Daniel Sadoc Menasché

Cliente/Servidor. Programação com Sockets. Graça Bressan. Graça Bressan/LARC

Introdução à Programação Sockets. Programação Sockets. (c) Volnys Bernal. Agenda. Introdução à Programação Sockets

Sistemas Operacionais - Básico e Avançado - Prof. Celso Maciel da Costa Mestrado em Informática - PUCRS

Redes de Computadores (PPGI/UFRJ)

Relatório do Laboratório 3

Sockets. André Restivo. April 29, Faculdade de Engenharia da Universidade do Porto. André Restivo (FEUP) Sockets April 29, / 27

Redes de Computadores

Sockets - Conceitos Básicos. COMUNICAÇÃO ENTRE PROCESSOS Sockets. Conceitos Básicos. Tipos de Sockets

Sistemas Operacionais:

Tutorial de Sockets - Parte I Por: Frederico Perim

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

Programação com sockets (em Java)

UMA ABORDAGEM SOBRE A INTERFACE DE PROGRAMAÇÃO DE APLICAÇÕES SOCKETS E A IMPLEMENTAÇÃO DE UM SERVIDOR HTTP

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

Prof. Marcelo Cunha Parte 5

Programação de Sistemas. Sockets. Programação de Sistemas Sockets : 1/66

1 Projeto de software de clientes. 1

Comunicação entre Processos. 1. Pipes 2. Fifos 3. Sockets

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

Protocolos de Aplicação

Redes de Computadores I

REDES DE COMPUTADORES

REDES DE COMPUTADORES

Redes de Computadores e Aplicações

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

Tecnologia de Redes de Computadores - aula 1

A Camada de Transporte

Protocolos de Redes Revisão para AV I

Sockets. Bruno Guimarães Lucas Rossini

Protocolo de resolução de endereços: ARP

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

Sistemas Distribuídos

Capítulo 7 CAMADA DE TRANSPORTE

Redes de Computadores Modelo de referência TCP/IP. Prof. MSc. Hugo Souza

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

Obter conhecimentos básicos sobre programação socket para desenvolver softwares clientes.

Sockets IPv6 para C/C++ - Criando e Portando Aplicações

Resolução de Nomes e Endereços

Sistemas Distribuídos

Programação TCP/IP. Protocolos TCP e UDP

Programação com Sockets

Rede de Computadores II

TECNOLOGIAS WEB AULA 2 PROF. RAFAEL DIAS

Redes de Computadores. Arquitetura de Protocolos Profa. Priscila Solís Barreto

Transcrição:

Programação com Sockets TCP e UDP - Cliente Gustavo Leitão 5/24/2010

INTRODUÇÃO Objetivo da Aula

OBJETIVO DA AULA Apresentar ao aluno conceitos e prática em sockets

INTRODUÇÃO O que é um socket?

INTRODUÇÃO O que é um Socket? Segundo Brian Beej Hall é a interface que permite conversar com outros programas De acordo com James F Kurose: socket é a interface entre a camada de aplicação e a de transporte dentro de uma máquina.

INTRODUÇÃO Características Uma das primeiras formas de programação distribuída (programas podem ser executados em uma ou diversas máquinas) Baseado no modelo de comunicação Cliente/Servidor Utiliza um protocolo de transporte (UDP, TCP)

ARQUITETURA DE REDE Socket Aplicação (FTP, HTTP, SMTP) Transporte (TCP e UDP) Rede (IP) Enlace (Ethernet) Aplicação (FTP, HTTP, SMTP) Transporte (TCP e UDP) Rede (IP) Enlace (Ethernet)

TIPOS DE SOCKETES TCP x UDP TCP Orientado a Conexão Controle de Erro Garante Entrega Entrega Ordenada x UDP Não necessita de conexão Não Possui controle de erro Mais simples e rápido

TIPOS DE SOCKETS 5/24/2010

BYTE ORDER Alguns computadores armazenam os números em Big-Endian, ou seja, o Byte mais significativo primeiro Ex: O número de dois bytes em hexadecimal representado por 4b5f será armazenado na seguinte ordem: 4b 5f Porém outros computadores (x86, Intel, Motorola, etc) armazenam seus dados em Little-Endian, ou seja, o byte menos significativo primeiro Ex: O número 4b5f seria armazenado na seguinte ordem: 5f 4b

BYTE ORDER Big-Endian é também chamado de Network Byte Order, por que é a forma como os dados devem ser transmitidos em rede. Seu computador, porém armazena números em Host Byte Order (Little- Endian)

BYTE ORDER Para resolver esse problema temos as seguinte funções: htons() host to network short htonl() host to network long ntohs() network to host short ntohl() network to host long

CHAMADAS DE SISTEMA socket (protofamily,type,protocol) bind (socket,localaddr,addrlen) listen (socket,queuesize) accept (socket,caddress,caddresslen) connect (connect,saddress,saddresslen) send (socket,data,lenght,flags) recv (socket,buffer,lenght,flags) close (socket)

PROGRAMA TÍPICO Servidor socket(); Cliente bind(); socket(); listning(); accept(); Aguardando Conexão connect(); receiv(); send(); close(); send(); receiv(); close();

PROGRAMA TÍPICO Socket - Acesso ao Descritor de Arquivo! int socket(int domain, int type, int protocol); #include <sys/types.h> #include <sys/socket.h> //Criando o socket (internet, TCP, IP) int socketfd = socket(af_inet, SOCK_STREAM, 0)); if (socketfd == -1 ){ perror( Error socket() ) ; exit ( 1 ) ; } Domínios: AF_UNIX, AF_LOCAL - Comunicação Local AF_INET - IPv4 AF_INET6 IPv6 Tipos: SOCK_STREAM - TCP SOCK_DGRAM - UDP

EXEMPLO 1 5/24/2010

PROGRAMA TÍPICO Connect- Inicializa conexão com um socket int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); struct sockaddr { unsigned short sa_family; // tipo de endereço, AF_xxx char sa_data[14]; // 14 bytes do endereço de protocolo }; struct sockaddr_in { short int sin_family; // tipo de endereço unsigned short int sin_port; //Número da porta struct in_addr sin_addr; //Endereço de Internet unsigned char sin_zero[8]; //Mesmo tamanho de struct sockaddr }; struct in_addr { unsigned long s_addr; };

PROGRAMA TÍPICO Connect- Inicializa conexão com um socket int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); int socketid; socketid = socket(af_inet, SOCK_STREAM, 0); //Criando o socket struct sockaddr_in endereco; //Struct de endereco endereco.sin_family = AF_INET; //tipo do protocolo endereco.sin_port = htons(4325); //porta endereco.sin_addr.s_addr = inet_addr("127.0.0.1"); //o endereco do servidor bzero( &( endereco.sin_zero ), 8); //inserir zeros int r = connect (socketid, (struct sockaddr *)&endereco, sizeof(struct sockaddr)); if (r == -1 ) { perror("error connect()\n"); exit(1); }

PROGRAMA TÍPICO Send e Recv Envia e recebe mensagens (TCP) ssize_t send(int sockfd, const void *buf, size_t len, int flags); ssize_t recv(int sockfd, void *buf, size_t len, int flags); char caracter = 'A'; //Enviando um A para o servidor if (send (socketid, &caracter, sizeof(caracter), 0) == -1 ) { perror ("Error send\n"); exit(1); } int byteslidos; if (byteslidos = recv (socketid, &caracter, 1, 0) == -1) { perror("error recv\n"); exit(1); }

PROGRAMA TÍPICO SendTo e RecvFrom Envia e recebe mensagens (UDP) ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen); ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen);

PROGRAMA TÍPICO Close Fecha a conexão int close(int socketfd); int shutdown(int socketfd, int how); How: 0 Fecha a conexão para receber mensagens 1 Fecha conexão para envio de mensagens 2 Fecha a conexão para ambos os lados similar o close()

Gustavo Bezerra Paz Leitão