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 : 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   */
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.