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 :

socket UDP inter processus


Sujet :

Réseau C

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Points : 493
    Points
    493
    Par défaut socket UDP inter processus
    Bonjour, je développe une toute petite application qui doit pouvoir mettre en avant les différences de performances entre send, sendto, sendfile etc...

    J'ai deux processus (fichier .C) qui tournent sur la même machine. Le premier communique avec le second au travers d'un socket UDP AF_INET (j'ai pas mis AF_UNIX car après je ferai des tests sur des machines différentes). La transmission utilise bel et bien la loopback adresse mais si j'envoie des volumes important de donnée comme par exemple 10'000'000 de trames de 4096 KB, a la réception je perds environ 0.5 % des trames... Comment est-ce possible ? ou peut se situer la perte ?

    Ci-dessous la manière très basique dont j'envoie et je réception les données pour une méthode d'envoi donnée.

    Envoi avec sendfile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(sendfile(sfd_inet_data,shm,NULL, size) == -1){
    printf("Thread_%lu - Error sendfile[shm->sockBuff] - %s - ERRNO %i\n", pthread_self(), strerror(errno), errno);
    exit(EXIT_FAILURE);
    }
    Envoi avec sendto
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    memcpy(&snd_buf,curr_addr,sizeof(snd_buf));
    if(sendto(sfd_inet_data,snd_buf,msg_len,0,(struct sockaddr*)&rd_data_addr, sizeof(struct sockaddr_in)) != msg_len){
    printf("Thread_%lu - Error sendto[] - %s - ERRNO %i\n", pthread_self(), strerror(errno), errno);
    exit(EXIT_FAILURE);
    }
    Réception toujours la même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    numBytes = recvfrom(fd, &RCV_BUFF, sizeof(RCV_BUFF), 0, NULL, NULL);
    if(numBytes == -1){
    perror("Error during recvFrom (Printhead<--SSPD(reader) [DATAS])");
    exit(EXIT_FAILURE);
    }
    Je tiens à préciser que je ne tombe jamais dans le cas d'erreur du recvfrom.

    merci a l'avance pour votre aide
    Il y a 10 types de personnes sur la planète. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 56
    Points : 54
    Points
    54
    Par défaut
    Salut,

    Par définition, UDP ne garantie pas l'acheminement des données, il faut utiliser TCP si tu veux que les messages arrivent. L'erreur est peut-être dans un buffer qui "déborde" : comme l’émetteur n'attend pas d'accusé de réception, il envoie toutes les trames alors que le destinataire n'a pas eu le temps de les lire.

Discussions similaires

  1. Communication inter processus avec des sockets
    Par kek's dans le forum Réseau
    Réponses: 4
    Dernier message: 17/01/2011, 11h43
  2. [windows] Communication inter-processus
    Par litbos dans le forum Windows
    Réponses: 6
    Dernier message: 16/01/2007, 09h13
  3. code c pour sockets (udp vers tcp et inversement)
    Par HiT dans le forum Développement
    Réponses: 11
    Dernier message: 19/11/2005, 18h03
  4. communication inter-processus
    Par benoit70 dans le forum MFC
    Réponses: 1
    Dernier message: 14/04/2005, 09h55
  5. Notion sur Socket UDP
    Par oxor3 dans le forum Développement
    Réponses: 3
    Dernier message: 05/04/2004, 00h19

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