×
Namespaces

Variants
Actions

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 04:26.
48 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×