Witam. Poniżej przedstawiłem fragment kodu programu klient-serwer, którego celem jest wysyłanie wiadomości z serwera do klienta po czym wyświetlenie ich i zapisanie pobranych wiadomości w pliku txt na dysku. Jakiej metody muszę użyć aby wyświetlać pobrane dane. Na początku wykorzystałem w Gui z Netbeam textArea.setText jednak dane nie ulegały nadpisowi a podmieniały się na nową wiadomość. Ten sam problem występował podczas zapisu w pliku txt. Dziękuje za pomoc.
Serwer
private void Nasluchuj(java.awt.event.ActionEvent evt) {
int port = 5500;
try{
DatagramSocket socket = new DatagramSocket(port);
while(true) {
byte[] buf = new byte[100];
DatagramPacket packet=new DatagramPacket(buf, buf.length);
socket.receive(packet );
String tekst;
tekst = (" ["+new String(packet.getData()).trim() +"] \n");
String[] ntekst= null;
for (int j = 0; j < ntekst.length; j++) {
String[] linie = {ntekst[j]};
FileWriter fw = null;
try {
fw = new FileWriter("plik.txt");
} catch (IOException e) {
e.printStackTrace();
}
BufferedWriter bw = new BufferedWriter(fw);
try {
for (int i = 0; i < linie.length; i++) {
bw.write(linie[i]);
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
bw.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}}
}
catch(Exception e) {System.err.println(e);}
}
Klient
private void wyslij(java.awt.event.ActionEvent evt) {
int port = 5500;
String adresip = jTextField2.getText();
String info =jTextField1.getText();
String czytnik= "czytnik1: ";
String napis =czytnik+info;
String wiadomosc="";
try {
InetAddress servAddr = InetAddress.getByName(adresip);
String data = napis;
byte buf[] = data.getBytes();
DatagramSocket socket= new DatagramSocket();
DatagramPacket packet = new DatagramPacket (buf, buf.length, servAddr, port );
socket.send(packet);
wiadomosc=wiadomosc+"wyslano do: "+adresip+" wiadomosc: "+napis+"\n";
textArea1.setText(wiadomosc);
jTextField1.setText("");
}
catch(Exception ex) {
System.err.println(ex);
}