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 :

Problème d'envoie de message


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut Problème d'envoie de message
    Bonjour, j'ai un petit problème : je suis en train de créer un serveur/client (le client envoie un fichier au serveur), et le client ne reçoit pas le messae de bienvenue du serveur.
    Voici le message d'erreur : Bad file descriptor (lors de l'appel de la fonction read() du client.)


    Merci d'avance !!

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Ta question est trop vague. Il faudrait poster le code.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut
    Voici la fonction gérant la connection coté serveur :
    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
    void traitement_connection(int sock)
    {
    	sockaddr adresse;
    	socklen_t longueur;
    	char bufferR[50];
    	char *message_bienvenue = "welcome";
    	char *contenu_fichier = NULL;
    	char *nb_caracteres = NULL;
    	int nb = 0;
     
    	longueur = sizeof(sockaddr_in);
    	if(getpeername(sock, (sockaddr *) &adresse, &longueur) < 0)
    	{
    		perror("getpeername()");
    		return;
    	}
     
            printf("Envoi du message de bienvenue.......");
    	write(sock, message_bienvenue, 8);
    	printf("Envoyé\n\n");
     
    	printf("Réception du fichier.......");
    	nb = read(sock, bufferR, 50);
    	bufferR[nb] = '\0';
     
    	write(sock, "ok", 3);
     
    	printf(".....");
    	nb = read(sock, nb_caracteres, 50);
    	nb_caracteres[nb] = '\0';
     
    	contenu_fichier = malloc(sizeof(char) * ((int) nb_caracteres + 1));
    	write(sock, "ok", 3);
     
    	printf(".....");
    	nb = read(sock, contenu_fichier, (strlen(bufferR) + 2));
    	contenu_fichier[nb] = '\0';
     
    	write(sock, "end", 4);
    	printf(".....");
     
    	ecriture_fichier(bufferR, contenu_fichier);
    	printf("Fait\n\n\n\n");
    }
    Et coté client:
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    int main(int argc, char **argv)
    {
    	int sock = 0;
    	int i = 0;
    	char *hostname = argv[1], *nom_fichier_depart = argv[2], *nom_fichier_arrivee = argv[3];
    	char bufferR[50] = {0};
    	char *contenu = NULL, *message_bienvenue;
    	int nb = 0, nb_caracteres = (comptage_caracteres_fichier(nom_fichier_depart) + 1);
    	sockaddr_in adresse;
     
    	contenu = malloc(nb_caracteres * sizeof(char));
    	message_bienvenue = malloc(8 * sizeof(char));
     
    	if(argc == 4)		sock = creation_socket(5837, hostname);
    	else			sock = creation_socket(atoi(argv[4]), hostname);
     
    	if(sock < 0)
    	{
    		perror("creation_socket()");
    		exit(0);
    	}
     
    	printf("Attente du message de bienvenue du serveur........");
     
    	if(nb = read(sock, message_bienvenue, 8) < 0)
    	{
    		perror("read()");
    		return -1;
    	}
    	message_bienvenue[nb] = '\0';
     
    	if(strcmp(message_bienvenue, "welcome") == 0)		printf("OK\n\n");
    	else
    	{
    		printf("Erreur\t%s\n\n", message_bienvenue);
    		for(i = 0 ; i < strlen(message_bienvenue) ; i++)		printf("%i\t ", message_bienvenue[i]);
    		exit(0);
    	}
     
    	printf("Envoi du fichier ...");
     
    	write(sock, nom_fichier_arrivee, (strlen(nom_fichier_arrivee) + 1));
     
    	nb = read(sock, bufferR, 50);
    	bufferR[nb] = '\0';
     
    	printf("....");
     
    	write(sock, (char *) nb_caracteres, (strlen((char *) nb_caracteres)));
     
    	nb = read(sock, bufferR, 50);
    	bufferR[nb] = '\0';
     
    	printf("....");
     
    	write(sock, contenu, strlen(contenu));
     
    	nb = read(sock, bufferR, 50);
    	bufferR[nb] = '\0';
     
    	printf("%s\n\n\n\n", bufferR);
     
    	close(sock);
    	free(contenu);
    	free(message_bienvenue);
     
    	return 0;
    }
    merci

Discussions similaires

  1. [OL-2007] problème d'envoi des messages
    Par barchoui dans le forum Outlook
    Réponses: 2
    Dernier message: 22/05/2009, 19h24
  2. Problème d'envoie de message
    Par clout26 dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 04/08/2008, 17h59
  3. Réponses: 8
    Dernier message: 29/06/2008, 23h47
  4. [Thread]Problème d'envoie de message
    Par homeostasie dans le forum MFC
    Réponses: 4
    Dernier message: 15/02/2007, 09h26
  5. [Outlook 2003] Problème d'envoie de message.
    Par bilb0t dans le forum Outlook
    Réponses: 12
    Dernier message: 18/05/2006, 11h45

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