Nie mogę zrozumieć co oznaczają błędy, które sypie aplikacja serwera:
java.io.StreamCorruptedException: invalid type code: AC
Serwer:
package ldoran.server;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import ldoran.chat.user.ChatUser;
public class ServerCore {
private static int connects = 0;
private ServerSocket server;
private ArrayList<Socket> socket;
public ServerCore(int port) throws IOException {
server = new ServerSocket(port);
socket = new ArrayList<Socket>();
}
public ServerSocket getServerSocket() {
return this.server;
}
//Create new connection
public void add(Socket s) {
synchronized(socket) {
if(!socket.contains(s))
socket.add(connects, s);
Runnable run = new ThreadServerCore(connects);
Thread thread = new Thread(run);
thread.start();
if(connects < socket.size()) {
connects++;
System.out.println("Connected: [" + connects + "]");
}
}
}
private class ThreadServerCore implements Runnable {
private int index = 0;
private ChatUser user;
public ThreadServerCore(int i) {
super();
index = i;
user = new ChatUser();
}
public void run() {
try {
ObjectInputStream in = new ObjectInputStream(socket.get(index).getInputStream());
while(socket.get(index).isConnected()) {
synchronized(socket) {
for(int i = 0; i < socket.size(); i++) {
user = null;
ObjectOutputStream out = new ObjectOutputStream(socket.get(i).getOutputStream());
user = (ChatUser)in.readObject();
System.out.println(user.getName() + ": " + user.getMsg());
out.writeObject(user);
out.flush();
}
}
}
synchronized(socket) {
socket.get(index).close();
socket.remove(index);
index--;
connects--;
System.out.println("Connceted: [" + connects + "]");
}
} catch(Exception ex) {
System.err.println(ex);
}
}
}
}
[EDIT]:
Zauważyłem, że obiekt jest poprawnie wysyłany client->server
Problem tkwi w jego rozgłoszeniu przez serwer do reszty klientów