×
Namespaces

Variants
Actions
Revision as of 07:26, 9 December 2011 by hamishwillee (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Iniciar uma nova sub-conexão via sockets a um ponto de acesso

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Artigo
Tradução:
Por kyllercg
Última alteração feita por hamishwillee em 09 Dec 2011


SIOCIFSTART e SIOCIFACTIVESTART são de fato chamadas a ioctl() que iniciam conexões e sub-conexões. Todas as comunicações via socket começam com chamadas como: connect(), read(), write(), send(), receive(), sendto(), e recvfrom() que devem vir antes de chamar SIOCIFSTART e SIOCIFACTIVESTART. Chamadas como getsockopt() e getsockname() que não requerem nenhuma conexão não dependem de SIOCIFSTART ou de SIOCIFACTIVESTART.

O código para iniciar uma nova conexão via sockets pode ser visto no artigo Iniciar uma nova conexão via sockets a um ponto de acesso.

O seguinte código mostra como iniciar uma nova sub-conexão usando uma conexão já aberta.

void NewSubconnection(char *ifname)
{
ifreq ifr;
int sockfd1, sockfd2;
 
// Nome da interface
strcpy(ifr.ifr_name, ifname);
 
sockfd1 = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
ioctl(sockfd1,SIOCSIFNAME, &ifr);
ioctl(sockfd1, SIOCIFSTART , &ifr);
 
sockfd2 = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
ioctl(sockfd2,SIOCSIFNAME, &ifr);
// Abre sub-conexão usando a conexão aberta anteriormente
// usando SIOCSIFNAME
ioctl(sockfd2, SIOCIFACTIVESTART , &ifr);
 
 
// recvfrom() e sendto() nos sockets sockfd2 e sockfd1
 
ioctl(sockfd2, SIOCIFSTOP, &ifr); // Para a conexão
ioctl(sockfd1, SIOCIFSTOP, &ifr); // Para a conexão
close(sockfd2);
close(sockfd1);
}


Links relacionados

This page was last modified on 9 December 2011, at 07:26.
92 page views in the last 30 days.