bonjour,
j'ai developpé un programme réseau qui fait l'écoute du port 514 et enregistre les paquets reçus dans des fichiers textes (logs).
L'écoute du port se fait dans une boucle while (true)
mon prob c'est que chaque fois que mon prog reçoit un paquet il écrase le paquet déjà enregistré dans l'itération précédente de façon que je ne récupère, à la fin, dans le fichier texte que le dernier paquet reçu.
voila mon prog, keske je dois ajouter ou modifier ?
si vous pouvez m'aider, je serai très reconnaissante !
package logmanager;
import java.io.*;
import java.net.*;
public class Listen implements Runnable {
static final int port=514;
String LogEquip;
public DatagramSocket socket;
Thread EcouteThread;
public void run ()
{
byte[] memoire = new byte[2500];
DatagramPacket reception = new DatagramPacket(memoire,memoire.length);
InetAddress[] tabadr = new InetAddress[10]; // tableau ou je vais enregistrer
// les adresses des équipements
// sources des paquets
String log;
int k;
k=1;
for (int i=0; i<tabadr.length; i++) // création de 10 fichiers textes
// pour 10 équipements
{
try {
LogEquip="LogEquip"+i+".txt";
FileOutputStream NouveauFichier = new FileOutputStream(LogEquip);
}
catch (FileNotFoundException e){}
}
try {
DatagramSocket socket =new DatagramSocket(port);
while(true){
socket.receive(reception);
InetAddress address = reception.getAddress();
for (int i=0; i<k; i++) // enregistrement des adresses sources des paquets
{ if (tabadr[i]!=address)
{tabadr[k]=address;
k=k+1;}
}
log=new String(reception.getData(),0,reception.getLength());
System.out.println("données reçues de "+reception.getAddress()+" sur le port "
+reception.getPort()+" :\n"+log );
for (int i=0; i<tabadr.length; i++)
{ if (tabadr[i]==address)
{ LogEquip="LogEquip"+i+".txt";
FileWriter fw= new FileWriter(LogEquip);
PrintWriter pw= new PrintWriter(fw);
pw.println("données reçues de "+reception.getAddress()+" sur le port "
+reception.getPort());
pw.println(log);
pw.close();
fw.close();
}
}
}
}
catch (Exception ex) {}
}
public void Start ()
{
EcouteThread = new Thread (this);
EcouteThread.start();
}
public void Stop ()
{
this.socket.disconnect();
this.socket.close();
}
}
Emira