socket SOCK_RAW fonction accept() nonbloquante ?
Salut les C réseaux:
Je bidouille un peu les sockets en C en locale lo (loopback): j'ai un serveur et un client c'est qui conversent...
Mais quand j'ai essayer de mettre le serveur et le client en mode SOCK_RAW au lieu de SOCK_STREAM, le serveur ne bloque pas sur la fonction accept pour attendre une connexion au lieu de ça la fonction accept() renvoie -1 (je n'ai pas le temps de lancer mon client) et passe directement a l'étape suivante qui est une boucle pour recevoir des données ?
Je lance bien l'exécutable en mode root obliger pour les socket RAW.et la socket est initialiser comme suit:
Code:
1 2 3 4 5 6 7
|
if ((server_id=socket(PF_INET, SOCK_RAW, IPPROTO_TCP) == -1) {
printf("unable to create server socket\n") ;
return ;
}
/* le code est identique au code SOCK_STREAM sauf cette ligne
et celui-ci fonctionne sans problèmes */ |
J'ai bien essayer de boucler sur ( accept() != 1 ) ca ne fonctionne pas non plus.
Je n'ai pas le code sur moi mais la question ne vient sûrement pas de celui-ci plutôt du fonctionnement des sockets en C, non ?
Alors les socket sont normalement bloquantes par défaut (et en mode SOCK_RAW ?) ?
J'attends vos réponses éclairés avec impatience.