Escolar Documentos
Profissional Documentos
Cultura Documentos
Gustavo Leito
5/24/2010
5/24/2010
INTRODUO
Objetivo da Aula
5/24/2010
OBJETIVO DA AULA
5/24/2010
INTRODUO
O que um socket?
5/24/2010
INTRODUO
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 aplicao e a de transporte dentro de uma mquina.
5/24/2010
INTRODUO
Caractersticas
Uma das primeiras formas de programao distribuda (programas podem ser executados em uma ou diversas mquinas)
5/24/2010
ARQUITETURA DE REDE
Socket Aplicao
(FTP, HTTP, SMTP)
Aplicao
(FTP, HTTP, SMTP)
Transporte
(TCP e UDP)
Transporte
(TCP e UDP)
Rede
(IP)
Rede
(IP)
Enlace
(Ethernet)
Enlace
(Ethernet)
5/24/2010
TIPOS DE SOCKETES
TCP x UDP
TCP
Orientado a Conexo Controle de Erro Garante Entrega Entrega Ordenada
UDP
x
No necessita de conexo No Possui controle de erro Mais simples e rpido
5/24/2010
TIPOS DE SOCKETS
5/24/2010
BYTE ORDER
Alguns computadores armazenam os nmeros em Big-Endian, ou seja, o Byte mais significativo primeiro
Ex: O nmero de dois bytes em hexadecimal representado por 4b5f ser armazenado na seguinte ordem: 4b 5f
Porm outros computadores (x86, Intel, Motorola, etc) armazenam seus dados em Little-Endian, ou seja, o byte menos significativo primeiro
Ex: O nmero 4b5f seria armazenado na seguinte ordem: 5f 4b
5/24/2010
BYTE ORDER
Big-Endian tambm chamado de Network Byte Order, por que a forma como os dados devem ser transmitidos em rede.
5/24/2010
BYTE ORDER
htons() host to network short htonl() host to network long ntohs() network to host short ntohl() network to host long
5/24/2010
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)
5/24/2010
PROGRAMA TPICO
Servidor
socket(); bind(); listning(); accept(); Aguardando Conexo receiv(); send(); close(); connect(); send(); receiv(); close(); socket();
Cliente
5/24/2010
PROGRAMA TPICO
#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 ) ; }
5/24/2010
EXEMPLO 1
5/24/2010
PROGRAMA TPICO
5/24/2010
PROGRAMA TPICO
5/24/2010
PROGRAMA TPICO
int bytesLidos; if (bytesLidos = recv (socketId, &caracter, 1, 0) == -1) { perror("Error recv\n"); exit(1); }
5/24/2010
PROGRAMA TPICO
5/24/2010
PROGRAMA TPICO