Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1225 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  DatagramPacket & DatagramSocket recupération des données

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

DatagramPacket & DatagramSocket recupération des données

n°1389626
spik90
Posté le 17-06-2006 à 12:39:27  profilanswer
 

Bonjour,
j'ai une application Serveur qui recoit un flux de données en UDP. Jusque là, pas de problème ou du moins tant que les données arrive pas trop vite.
je m'explique:
une machine envoie les données 1;2;3;4;5 sur ~1 milisecondes (connection ethernet 10 mb half)
J'ai controlé avec ethreal, les données arrive correctement.
le problème, c'est que mon programme réagit comme s'il avait reçu 5 paquets, mais ils contienent tous les même data  :ouch:  
donc en affichant ce que je recois, j'ai les data 5;5;5;5;5
 
voici le code:

Code :
  1. private int DGRAM_BUF_LEN = 512;
  2.     private Vector monTamponData = new Vector();
  3.     private Vector monTamponIP = new Vector();
  4.     public void run(){
  5.     DatagramSocket socket = null;
  6.     try {
  7.      socket = new DatagramSocket(InPort);
  8.     } catch (SocketException e) {
  9.      e.printStackTrace();
  10.      System.exit(3);
  11.     }
  12.  try {
  13.   byte[] buf = new byte[DGRAM_BUF_LEN];
  14.   DatagramPacket packet = new DatagramPacket(buf, buf.length);
  15.   while (true) {
  16.    packet = new DatagramPacket(buf, buf.length);
  17.    socket.receive(packet);  //wait for data
  18.    monTamponData.add(packet.getData());
  19.    monTamponIP.add(packet.getAddress());
  20.   }
  21.  } catch(IOException e) {
  22.   e.printStackTrace();
  23.  }
  24.     }


 
J'ai essayé d'utiliser un vector comme tampon en me disant que cela permeterai une écriture plus rapide, mais rien a faire..
Quelqu'un a une idée ?

mood
Publicité
Posté le 17-06-2006 à 12:39:27  profilanswer
 

n°1389644
spik90
Posté le 17-06-2006 à 14:21:17  profilanswer
 

Bon, voila, j'ai trouvé le problème et la solution qui va avec. Je sais pas si c'est ce qu'on peux faire de mieux, mais ça marche.
Pour commencer, apparement, l'addresse mémoire de packet, bien qu'un new soit fait, reste la meme. Ce qui veux dire que quand je lis les données, je lis uniquement les dernière donnée inserées d'ou l'affichace de 5;5;5;5;5.
La solution que j'ai emploiée est simplement de stocker les valeurs sous forme de String. En faisant ça, je force le système a stocker les valeurs dans une nouvelle plage mémoire -> pas de réécriture des données.
 
donc a la place de  
 
monTamponData.add(packet.getData());
monTamponIP.add(packet.getAddress());
 
je met :
 
monTamponData.add(new String(packet.getData(), 0, packet.getLength()));
monTamponIP.add(new String(packet.getAddress().toString()));
 
Aller, bonne journée
@+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  DatagramPacket & DatagramSocket recupération des données

 

Sujets relatifs
Base de données lycos[CREATION] Base de données en PHP sans MySQL (PHP4 - test en cours)
Affichage/Masquage de donnéesHelp ! Macro excel pour importer données de differents onglets
Recuperer données SQL en fichier ExcelModifications des données dans mysql avec VB6
Affichage des données d'un BLOB Oracle 10g[PHP] Aperçu de fichiers - Extraire données fichier Excel
[excel, VBA....ou non....] Interpolation de donnéesRécupération de variables
Plus de sujets relatifs à : DatagramPacket & DatagramSocket recupération des données


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR