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

C++ Discussion :

réutilisation d'un flux UDP Wireshark - C Arrays


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 81
    Points : 65
    Points
    65
    Par défaut réutilisation d'un flux UDP Wireshark - C Arrays
    Bonjour,

    Avec Wireshark, j'ai capturé un flux UDP et je l'ai exporté avec la fonction "C Arrays". Je voudrais maintenant pouvoir alimenter mon programme avec ces trames. Le souci c'est que le fichier se présente sous la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    char pkt1[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, ... };
    char pkt2[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, ... };
    char pkt3[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, ... };
    ...
    Sachant qu'il y a des milliers de trames, je souhaiterais appeler la fonction de décodage au sein d'une boucle for, mais comment faire pour appeler ces tableaux qui n'ont pas de lien direct entre eux ?

    J'ai essayé de passer par la commande préprocesseur # :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #define STRINGERIZE(x) pkt#x
     
    for (int i = 1 ; i <= 20000 ; i++)
      {
        decode(STRINGERIZE(i));
      }
    Mais çà ne marche pas, çà retourne pkti au lieu de pkt1 pour i=1.

    Auriez-vous une autre piste ?
    Merci.

    PS : Je poste dans le forum C++ car mon programme est écrit en C++ même si le problème ressemble ici plutôt à du C.

  2. #2
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 533
    Points : 6 709
    Points
    6 709
    Par défaut
    Bonjour,

    non, le préprocesseur n'est pas la solution, en tout cas comme cela

    cet "export C" produisant du code cela a le désavantage de devoir compiler celui-ci avec la chose qui l'utilise, et donc de le refaire à chaque fois

    s'il y a d'autre export que celui-ci par exemple un export produisant directement un/des fichier(s) contenant ces données alors cela est préférable car le programme les utilisant n'aura pas à être compilé à chaque fois.

    sinon si vous voulez vraiment utiliser cet export alors le mieux est de produire automatiquement (via un prog c[++], ou un coup de awk etc) un autre source contenant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char * allpkti[] = { pkt1, pkt2 ... };
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 81
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    Je reviens après pas mal de temps. Désolé.
    Merci pour la solution avec awk. C'est ce que j'ai utilisé. C'est pas l'idéal car on arrive vite à une saturation mémoire (stack overflow à la compilation) quand le nombre de paquets est trop grand mais pour un test rapide, c'est parfait.

    Je ne connaissais pas awk, le voilà ajouté à ma liste de "petits" utilitaires sympas. Ca a l'air vraiment puissant.
    Le script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     #!/usr/bin/awk -f
    BEGIN{print "Generation du fichier incluant tous les paquets"}
    {
    printf "char * allpkti[] = {" > "file"
    for (i = 1; i <= 14714; i++)
             printf "pkt" i ", " > "file"
    printf "};" > "file"
    exit
    } 
    END{print "Fin de la generation"}
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. redirection flux UDP
    Par albertopisto dans le forum Réseau
    Réponses: 1
    Dernier message: 05/07/2011, 08h23
  2. [IPTABLE] Problème pour rediriger un flux UDP
    Par SuperCed dans le forum Réseau
    Réponses: 0
    Dernier message: 06/07/2010, 17h50
  3. Flux UDP avec Windows Media Player
    Par yous18 dans le forum Windows 7
    Réponses: 3
    Dernier message: 21/02/2010, 00h38
  4. Bloquer un flux udp multicast
    Par apesle dans le forum Réseau
    Réponses: 4
    Dernier message: 22/07/2009, 09h54
  5. affichage en boucle image recu sur flux udp/rtp VLC
    Par aziatedu13 dans le forum Multimédia
    Réponses: 1
    Dernier message: 20/02/2008, 14h41

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