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:
J'ai bien essayer de boucler sur ( accept() != 1 ) ca ne fonctionne pas non plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 */
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.
Partager