Так что я отправить Server
объект к клиенту этой теме:Java «NotSerializableException: java.net.Socket» Когда не посылает гнездо
public ConnectionThread(final Server server) {
super(new Runnable() {
public void run() {
try {
Socket client = server.serverSocket.accept();
server.clients.add(client);
ObjectInputStream in = new ObjectInputStream(
client.getInputStream());
ObjectOutputStream out = new ObjectOutputStream(
client.getOutputStream());
System.out.println("Connected client: "
+ client.getRemoteSocketAddress());
server.launchNewThread();
Object input;
while (!client.isClosed()) {
input = in.readObject();
if (input != null) {
if (input.toString().equals("server")) {
out.writeObject(server);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
И когда я называю out.writeObject (сервер) Я получаю это исключение:
java.io.NotSerializableException: java.net.Socket
Вот класс сервера:
public class Server implements Serializable {
private static final long serialVersionUID = 4634111951586948020L;
public ServerArgs args;
public ArrayList<Socket> clients = new ArrayList<Socket>();
public ServerSocket serverSocket;
public Server(int port) throws IOException {
serverSocket = new ServerSocket(port);
launchNewThread();
}
public void launchNewThread() {
ConnectionThread thread = new ConnectionThread(this);
thread.start();
}
public static void main(String[] args) throws IOException {
new Server(27015);
}
}
Просьба указать определение класса сервера –
Недопустимый цикл чтения. 'client.isClosed()' не волшебным образом становится истинным, когда партнер отключается, а 'readObject()' не возвращает значение null, если вы не написали null. Вы должны зацикливаться до тех пор, пока не будет обнаружено «EOFException». – EJP