Hey Ich versuche dieses Programm aus den letzten 2-3 Tagen zu debuggen. Hier ist das Problem, ich baue eine Client-Server-Architektur und alle Clients Ping-Server (mit ihren Informationen) nach bestimmten Zeitintervallen mit Socket-Verbindung.So auf der Serverseite, wenn ich versuche, einen ObjectOutputStream zu konstruieren das Programm stecken bleiben. Hier ist der Code des Kunden.
Programm bei ObjectInputStream-Konstruktor stecken
public void pingUpdate(){
Thread pingThread = new Thread() {
public void run() {
while(true) {
try {
ping_socket = new Socket("localhost", 11111);
ObjectOutputStream ping_objectOutputStream = new ObjectOutputStream(ping_socket.getOutputStream());
ping_objectOutputStream.flush();
ping_objectOutputStream.writeObject(user);
ping_objectOutputStream.close();
ping_socket.close();
}catch (Exception exception) {
exception.printStackTrace();
}
}
};
pingThread.start();
}
Und hier ist der Code des Servers
public void run() {
while (true) {
try {
System.out.println("Server Listening");
Socket client = null;
client = serverSock.accept();
System.out.println("Accepted");
InputStream inputStream = client.getInputStream();
System.out.println("Input stream established");
ObjectInputStream ois = new ObjectInputStream(inputStream);
System.out.println("Object streams established");
User user = (User) ois.readObject();
System.out.println("Object read");
ois.close();
client.close();
}
catch (Exception e){
e.printStackTrace();
}
}
}
Die Server-Programm druckt bis "Input-Streams etabliert" und steckt. Ich weiß nicht, warum das passiert, obwohl ich den Ausgabestrom auf Client-Seite flushed.Thanks.
Sie sollten Ihren Stream einmal erstellen. Ihr 'pingThread' erzeugt einen neuen' ObjectOutputStream' in jeder Schleife. Vielleicht möchten Sie auch einige Netzwerktutorials durchgehen, sonst werden Sie wochenlang debuggen. – Kayaman
Wenn eine Ausnahme ausgelöst wird, schließen Sie den Socket nicht. – EJP
@Kayaman Was ist das Problem beim Erstellen von ObjectOutputStream bei jeder Iteration der Schleife? – omjego