Você está na página 1de 5

Funo socket

#include <sys/socket.h> int socket(int domain, int type, int protocol);


Funo que retorna um descritor de arqui o do socket criado. ! par"metro int domain est# relacionado ao escopo de atuao do socket, podendo ser de dois tipos $ocal ou %ede& 'l(uns e)emplos de par"metros domain& $ocal& 'F*$!+'$ %ede& 'F*,-./ 'F*,-./3 'F*456 'F*,14 'F*-./8.9, 'F*'11$./'$< 0 0 0 0 0 0 1ilha /+1/,1 ersao 2 1ilha /+1/,1 ersao 3 1rotocolo 4.56 de r#dio amador 1rotocolo ,14/714 da -o ell -et:eui da ,8; 'pple/alk da 'pple

! par"metro int type de=ine a maneira de acesso as =am>lias ou pilhas de protocolo, de =orma a no de=inir o protocolo diretamente mas por esta:elecer quais os recursos sero utili?ados pelo socket, que podem ser& 7equenciamento& !s dados sero rece:idos na mesma ordem que =oram en iados. %etransmisso& +aso al(um dado se@a perdido ha er# retransmisso, ou se@a, no h# perda de dados. !rientado a cone)o& 'ntes do tr#=e(o dos dados, uma cone)o A esta:elecida. -o orientado a cone)o& -o h# esta:elecimento de cone)o. $ista com os principais tipos de sockets e os recursos suportados& 7!+<*7/%.';& sequenciamento, retransmisso e orientao a cone)o. 7!+<*BC%';& no orientado a cone)o, no possui retransmisso, utili?a data(ramas de tamanho m#)imo =i)o. 7!+<*7.D1'+<./& sequenciamento, con=ia:ilidade, orientao a cone)o, utili?a data(rama de tamanho m#)imo =i)o. 7!+<*%'E& 1ro F acesso direto aos protocolos. 7!+<*%B;& 1ro F uma camada con=i# el para tra=e(ar data(ramas, mas no (arante sequenciamento.

! par"metro protocol de=ine o protocolo que ser# utili?ado pelo socket, toda ia a escolha de domain e type @# A su=iciente para que o kernel de=ina o protocolo, para isso de e0se passar G como par"metro, a se(uir al(uns protocolos& ,11%!/!*,+;1 H I ,11%!/!*,C;1 H 5 ,11%!/!*,1,1 H 2 ,11%!/!*/+1 H 3 ,nternet +ontrol ;essa(e 1rotocol ,nternet Croup ;ana(ement 1rotocol ,1,1 tunnels /ransmission +ontrol 1rotocol

Estrutura sockaddr_in +ada dom>nio possui o seu prJprio =ormato de endereamento e A con=i(urado atra As de uma estrutura de dados, possuindo in=ormaKes opcionais e particulares a serem con=i(uradas para o per=eito =uncionamento do socket. -este caso a estrutura de endereo A a ,1 2.

#include <netinet/in.h> struct sockaddr*inL sa*=amily*t uintI3*t struct in*addr usi(ned char P; struct in*addrL uintQ5*t P;
Funo htons #include <netinet/in.h> short htons(lon() Be ido ao :yte order, reali?a con erso do tipo Rost to -etSork 7hort. Funo inet_addr +on erte um endereo ,1 no =ormato separado por pontos, em um inteiro lon(o.

sin*=amily; sin*port; sin*addr; sin*?eroMNO;

s*addr;

#include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> in*addr*t inet*addr(const char Tip); ! par"metro const char Tip A o endereo ,1 2 no =ormato separado por ponto para que se reali?e a con erso. Funo connect 1ara que um cliente possa esta:elecer um canal de comunicao com um ser idor /+1 A preciso utili?ar a =uno connect.

#include <sys/socket.h> int connect(int sock=d, struct sockaddr Tser *addr, socklen*t addrlen);
' =uno retorna um inteiro para indicar se hou e sucesso ou no. sock=d U A o descritor de arqui o do socket que se dese@a para esta:elecer a cone)o. struct sockaddr Tser *addr U V a estrutura de endereo que contAm o endereo ,1 e a porta do ser ido que se dese@a conectar. socklen*t addrlen U /amanho da estrutura de endereo que pode ser o:tida atra As da =uno si?eo=. Funo send

#include <sys/socket.h> send(int sock=d, const oid Tms(, int len, unsi(ned int =la(s);
' =uno send possui a capacidade de en iar in=ormaKes atA a outra ponta da comunicao, e retorna a quantidade de :ytes que =oram en iados, caso tenha ocorrido uma =alha, retorna 0I. 1ossui quatro par"metros e estes so& int sock=d& descritor do arqui o socket que ser# utili?ado para a comunicao. const oid Tms(& o dado a ser tra=e(ado, como A do tipo oid Tms(, no h# limitaKes do tipo do dado a ser en iado, podendo ser int, strin(, uma struct, etc.

int len& A o tamanho do par"metro Tms(, o:tido atra As do si?eo=. ,nt =la(s& de=ine mudanas de comportamento para a =uno, caso no se dese@e alterar o comportamento de send, passar G como par"metro. 1assando ;7C*B!-/E',/ a =uno :loqueia o =lu)o de e)ecuo atA o momento que rec () rece:er al(um dado. ;ais opKes espec>=icas consultar o manual online do linu)( man 5 rec ). Funo recv

#include <sys/socket.h> ,nt rec (int sock=d, oid Tms(, int len, unsi(ned int =la(s);
' =uno rec possui a capacidade de rece:er in=ormaKes en iadas pela outra ponta do canal de comunicao, caso tenha ocorrido uma =alha no rece:imento de dados, a =uno retorna 0I, seno retorna a quantidade de :ytes rece:idos. 1ossui quatro par"metros e estes so os mesmos @# e)plicados na =uno send. Funcao close

#include <unistd.h> int close (int =d);


9ma e? criado o socket, A necess#rio (arantir que ao =inal do processo de utili?ao, o socket se@a encerrado de =orma a li:erar recursos ao kernel. int =d A o descritor de arqui o do socket que se dese@a encerrar o =uncionamento. Estrutura hostent .strutura que representa um host.

struct hostent L char char int int char P

Th*name; TTh*aliases; h*addrtype; h*len(th; TTh*addr*list;

char Th*name& .ste campo representa o nome o=icial do host. +har TTh*aliases& V um array de 7trin(, onde cada posio arma?ena um alias para o host em questo. ,nt h*addrtype& indica o tipo de endereo ,1( 2 ou 3) presente no item h*addr*list. ,nt h*len(th& arma?ena a quantidade de :ytes necess#rios para o endereo ,1, no caso 2 :ytes. +har TTh*addr*list& 9m array que ama?ena os endereos ,1. Funo gethostbyname

#include <netd:.h> struct hostent T(ethost:yname( const char Tname);


Funo que retorna um ponteiro para o hostent para o host que possui nome i(ual a name.

Byte order U A a maneira como as +19 utili?am arran@os para a(rupar mWltiplos :ytes de dados para =ormar inteiros de I3, Q5 ou mais :its, e)istem dois arran@os principais o :i(0endian e o litle0endian, no primeiro os :ytes mais si(ni=icati os se encontram apartir do in>cio da cadeia de :ytes e o se(undo o in erso, lo(o o :yte order A um pro:lema caso dois computadores com arran@os di=erentes resol am se comunicar.

Você também pode gostar