Witam, zaobserwowałem dziwne (przynajmniej dla mnie:)) zachowanie związane z arraylist i przesyłaniem danych przez gniazdo.
Najpierw w porgramie klienta dodaje elementy do listy i trzy razy wysyłam to samo. przed czwartym wysłaniem dodaje jeszcze jeden element... ale po wysłaniu nie jest on wyświetlany na serwerze.
Nie rozumiem :F
Serwer:
import java.io.*;
import java.net.*;
public class serv {
public static void main(String[] args) throws IOException, ClassNotFoundException {
ServerSocket ss = new ServerSocket(7777);
Socket s = ss.accept();
if (s != null) {
ObjectInputStream input = new ObjectInputStream(s.getInputStream());
for (int i = 0; i < 4; i++) {
pakiet p = (pakiet) input.readObject();
System.out.println("lista: "+p.lista);
}
}
}
}
Klient:
import java.io.*;
import java.net.*;
import java.util.ArrayList;
public class klient {
public static void main(String[] args) throws IOException {
Socket s = new Socket("localhost", 7777);
ObjectOutputStream output = new ObjectOutputStream(s.getOutputStream());
ArrayList tmp = new ArrayList();
tmp.add("jan");
tmp.add("adam");
for (int i = 0; i < 3; i++) {
pakiet p = new pakiet();
p.lista = tmp;
output.writeObject(p);
}
tmp.add("ewa");
pakiet p = new pakiet();
p.lista = tmp;
output.writeObject(p);
}
}
Pakiet:
import java.io.Serializable;
import java.util.ArrayList;
public class pakiet implements Serializable {
ArrayList lista;
}