Hi,
accept() blockiert bis sich ein Client anmeldet und gibt dann einen Socket zurück.
Dein Code wartet auf zwei Clients, das erstemal in der if-Abfrage, das zweite mal innerhalb des Anweisungsblock der if-Abfrage.
Die if Abfrage ist also überflüssig, die NullPointerException muss eine andere Ursache haben.
Könnte z.B daran liegen, dass s und c lokale Objekte sind, die vom GarbageCollector gelöscht werden,
wenn der nächste Durchlauf der while Schleife einsetzt. Folgendes sollte also funktionieren:
Damit du mehrere Clients bedienen kannst,Code:import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; class Server implements Runnable { public void run() { Client c; try { ServerSocket sv = new ServerSocket(4003); while(true) { c = new Client( sv.accept() ); } } catch(IOException e) { System.out.println(e.getMessage()); } } }
muss dein Client-Objekt einen neuen Thread erstellen, sollte also von Thread abgeleitet werden.
Gruß, Dirk







Zitieren

Lesezeichen