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

Entrée/Sortie Java Discussion :

[Réseau] Buffer en temps réel


Sujet :

Entrée/Sortie Java

  1. #1
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 32
    Par défaut [Réseau] Buffer en temps réel
    Bonjour

    J’aimerais faire un programme qui récupère des données du FireWall (les logs du trafic du réseau) en temps réel afin de les stocker dans une Base de données.

    J’ai procédé comme suit :

    1. J’ai ouvert le port 514(UDP) en écoute à l’aide d’un DatagramSocket.
    2. J’ai défini un DatagramPacket qui récupère la trace des paquets un par un à l’aide d’un buffer que j’ai converti en String.

    Donc, ce buffer contient toutes les données (IPsource, IPdestination, date, heure…) "en vrac" sous forme de string.Ce buffer est alors l’intermédiaire entre le Firewall et la BD.

    Ma question est alors :
    Quelle est la méthode la plus rapide qui permet d’insérer le contenu de ce buffer dans la BD pour qu’il puisse rapidement récupérer le contenu du paquet suivant puisque je travaille en temps réel ?


    Merci pour votre aide



    [Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java

  2. #2
    Membre expérimenté
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Par défaut
    Déja une chose, fait l'insersion dans la base de donnée dans un Thread à part, ainsi pas de délai d'attente que c'est finis.
    Ensuite pour tes chaines de caractéres tu dis que tu récupéres les infos "en vrac", cela veut dire qu'elle peuvent être dans n'importe quel ordre, ou y a-t-il un format précis ?
    Si tu as un format precis, suffit de découpé ta chaine en infos, ce qui peut être fait par la méthode split par exemple si tes infos sont séparées par le même caractére. Enfin c'est à voir. Si tu as un format précis, je pourais t'aider à trouver la méthode la plus rapide pour le découpage.. Sinon, tu dois avoir un moyen de reconnaitre une info d'une autre, mais ca peut être un peut plus compliquer. En fait tout dépend de ta chaîne de caractéres. Donc si tu nous en disait un peu plus sur elle on pourait mieux t'aider.

  3. #3
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 32
    Par défaut
    OUI ! elle a un format et un ordre précis exemple:''172.128.16.10,195.100.20.10,12/01/2005,00:00:20"

    Mais c'est quoi un split ? c'est comme du parsing ?

    Merci

  4. #4
    Membre expérimenté
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Par défaut
    Un split c'est en fait découpé ta chaine en plusieurs chaines selon certains critéres, dans ton cas tout est séparé par des virgules, donc pour recupéres toutes tes infos, il te suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String[] infos = chaine.split(",");
    et zou, tu as toutes tes infos les unes derieres les autres dans ton tableau.

  5. #5
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 32
    Par défaut
    ainsi, le probleme devient :
    vider ce tableau le plus vite possible pour récuperer le paquet suivant !!

    est ce que tu as une idée ??


  6. #6
    Membre expérimenté
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Par défaut
    Eh bien pas tout a fait, si tu as fait comme je te l'ai dit avnt, c'est à dire faire le traitement de stockage dans la base dans un Thread.
    En fait tu as deux Thread, le premier ne fait que remplir le bufferr des chaines recues, ce qui est rapide. Et donc on peut passer à l'envoie suivant en temps réel.
    L'autre Thread lui lit le Buffer, fait le traitement de tes chaines. Avec l'astuce que je t'ai donné tu as un tableau des infos. Avec se tableau tu peux directement faire ta requete à ta base.
    Ces deux Thread étant indépendant l'écriture dans ta base ne va pas ralentir la reception de tes données
    Pour le Buffer je te suggére d'utiliser une file, comme ça l'écriture et la lecture ne rentreront pas en conflit. Au pire quand tu vousdras stocké tes données la file peut être vide, dans ce cas suffit d'attendre un peu.

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

Discussions similaires

  1. Création d'une carte réseau en temps réel (Javascript/php/Json/AJax)
    Par hermally dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 31/03/2015, 11h28
  2. Disponibilité en temps réel de l'information dans un réseau distribué
    Par sy5tem dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 01/03/2015, 17h45
  3. Voir requête éxécuté en temps réel ?
    Par [DreaMs] dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/01/2004, 14h52
  4. cubes temps réel en ROLAP
    Par Guizz dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 09/07/2003, 16h36
  5. Durée d'un traitement temps réel
    Par Almex dans le forum C
    Réponses: 5
    Dernier message: 29/03/2003, 14h15

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