IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

Erreur : Bad file descriptor sur socket


Sujet :

Réseau C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 11
    Par défaut Erreur : Bad file descriptor sur socket
    Bonjour amis développeurs,

    J'essaye de mettre en place un serveur en C pour apprendre à manipuler les Sockets, mais je me heurte à un soucis que je ne comprend pas.

    Ci dessous vous pouvez trouver le code qui me pose soucis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    #define TAILLE_MAX_DONNEE	1024
    #define SOCKET_PATH "/Users/TariC/Documents/socket/sock"
    int main()
    {
    	socklen_t longueur_adresse;
    	struct sockaddr_un adresse;
    	int fd;
     
    	adresse.sun_family = AF_LOCAL;
    	strcpy(adresse.sun_path, SOCKET_PATH);
    	longueur_adresse = SUN_LEN(&adresse);
     
     
    	fd = socket(PF_LOCAL, SOCK_DGRAM, 0);
     
    	if (fd < 0) {
    		abandon("Création du socket serveur");
    	}
     
    	if (bind(fd, (struct sockaddr *) &adresse, longueur_adresse) < 0) {
    		abandon("Nommage du socket serveur");
    	}
     
    	printf("> Serveur demarre sur le socket local\n");
     
    	while (1) {
    		int lg;
    		char tampon[TAILLE_MAX_DONNEE+1];
    		lg = recvfrom(lg, tampon, TAILLE_MAX_DONNEE, 0, NULL, NULL);
    		if (lg <= 0) {
    			abandon("Reception datagramme");
    		}
    		tampon[lg] = '\0';
    		printf("Recu : %s\n", tampon);
    		if (strcmp(tampon, "stop") == 0) {
    			printf("> arret demande\n");
    			break;
    		}
    	}
     
    	close(fd);
     
    	return EXIT_SUCCESS;
    }
    Le domaine du socket est local (PF_LOCAL). Le programme est censé afficher les messages qu'il reçoit jusqu'à la reception du message "stop" qui mettra fin à l'execution.

    Tout semble bien se passer jusqu'au recvfrom(). Je vous laisse une trace d'execution :

    Reception datagramme: Bad file descriptor
    > Serveur demarre sur le socket local
    Je précise que le fichier /Users/TariC/Documents/socket/sock est bien créé.

    Quelqu'un pourrait-il m'aider à trouver mon erreur ?

    D'avance merci

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Le premier argument de recvfrom devrait être fd, pas lg.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 11
    Par défaut
    Wahou j'ai super honte ... :S

    Merci c'était bien là que se trouvait mon erreur ! Merci de ton aide.

Discussions similaires

  1. Bad File descriptor avec fcntl
    Par guigui31 dans le forum Débuter
    Réponses: 2
    Dernier message: 21/04/2008, 20h11
  2. Réponses: 0
    Dernier message: 18/11/2007, 20h53
  3. Erreur: bad file descriptor
    Par Bruno51 dans le forum Langage
    Réponses: 10
    Dernier message: 06/09/2007, 16h44
  4. Bad file descriptor avec un read()
    Par je®ome dans le forum C
    Réponses: 2
    Dernier message: 04/04/2006, 19h30
  5. Etrange "Bad file descriptor"
    Par amauryxiv dans le forum Langage
    Réponses: 23
    Dernier message: 01/02/2006, 03h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo