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 :

Ordre d'arrivée des paquets en UDP /SOCKET


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2020
    Messages : 18
    Par défaut Ordre d'arrivée des paquets en UDP /SOCKET
    bonjour!
    Je reçois des information d'un système externe à mon pc, qui m'envoie une trame (numérote) toute les 4ms, j'arrive à les recevoir, ça pas de soucis ,mon problème qui vas vous paraître bizarre est que je veut recevoir la dernière trame émise et pas les trames dans l'ordre dans lesquelles elles sont envoyer, même si je perd des trames c'est "pas grave", je veut juste la dernière.

    si vous avez des pistes je suis preneur!!

    merci!

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Bonjour,

    comment lis-tu les trames ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2020
    Messages : 18
    Par défaut
    salut !
    comme ça =
    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
     
    sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
     
     
        if(sock !=-1)    // Configuration //
        {   memset((char *)&sinip, 0, sizeof(sinip));
            sinip.sin_addr.s_addr = inet_addr("192.168.1.4");//sin.sin_addr.s_addr = htonl(INADDR_ANY);  
            sinip.sin_family         = AF_INET;             // Protocole(TCP/IP)
            sinip.sin_port           = htons(PORT);         // Listage du port 
            sock_err = bind(sock, (SOCKADDR*)&sinip, sizeof(sinip));
        }
        if (sock_err==-1){if (pass==0){printf("La socket est pas encore connecté \n");pass=+1;}; connectsock=0;} 
        else{printf("La socket est maintenant ouverte en mode UDP \n");connectsock=1;}
     
     
    while(1)
        {
            int nb_octet = recvfrom(sock, buffer, sizeof(buffer), 0, (SOCKADDR*)&sinip, &fromlen); //reception de la data dans buffer
            //   printf("buffer= %s \n",buffer);
            //   printf("nb oct = %d \n",nb_octet);
     
                        char *dataM_X = rech(buffer,"<M_X>");
                        double M_X = atof(dataM_X);
                 ect ..... ect....
     
    if (selectionsujet==1)
        {
     
            printf("choix du sujet a configuré de 1 à 3\n");
            scanf("%d",&choix);
            printf("Entrez dist focus en mm\n");// futur input
            scanf("%d",&distfocus);
                        nb_octet = recvfrom(sock, buffer, sizeof(buffer), 0, (SOCKADDR*)&sinip, &fromlen); //reception de la data dans buffer
                        printf("nb oct = %d \n",nb_octet);
     
                  ect... ect....
         }
        }
    en fonctionnement normale je ne passe pas dans mon if donc j'arrive bien à toujours avoir la dernière trame car mon programme est plus rapide n'as pas de fonctions bloquantes(à par le recv si rien ne m'es envoyer), mais quand je passe dans dans mon if avec mon scanf je prend du retard et mon recv ne lis que la première trame depuis qu'il est en arrêt...

    en espérant que ça sois plus clair
    merci!

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2020
    Messages : 18
    Par défaut
    oui j'ai bien un identifiant "IPOC" en fin de trame

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Rob Type="FANUC"><M_X>-1049.946</M_X><M_Y>-499.817</M_Y><M_Z>622.130</M_Z><M_W>-175.352966</M_W><M_P>89.161713</M_P><M_R>39.577858</M_R><F_X>-1049.946</F_X><F_Y>-499.817</F_Y><F_Z>622.130</F_Z><F_W>-175.352936</F_W><F_P>89.161720</F_P><F_R>39.577885</F_R><IPOStat>0</IPOStat><BMode>2</BMode><TRG>0</TRG><myRob>1</myRob><IPOC>1853552</IPOC></Rob>
    mais qand je met sur "pause" l'acquisition je stock tout les messages et quand je reprend la lecture je relis dans l'ordre d'arrivé les messages qui on été bloqué par ma pause.

    5>4>3>2>1||Pause||
    ||lecture||1>2>3>4>5
    au lieux e faire
    5>4>3>2>1||Pause||
    ||lecture||5>6>7ect..

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Bien, maintenant il faut lire la seconde partie du message
    Tu dois tout recevoir et ne garder que le plus récent à traiter.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/10/2010, 11h23
  2. ordre d'arrivé des clients chez le socket serveur
    Par yacin87 dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 19/04/2010, 03h51
  3. Remettre dans l'ordre des paquets UDP
    Par Snooker9 dans le forum C
    Réponses: 3
    Dernier message: 28/04/2009, 10h27
  4. [UDP][Socket] perte de paquets et arret d'ecoute sur port
    Par Guismo1979 dans le forum Développement
    Réponses: 6
    Dernier message: 02/01/2003, 12h13

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