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:
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());
}
}
}
Damit du mehrere Clients bedienen kannst,
muss dein Client-Objekt einen neuen Thread erstellen, sollte also von Thread abgeleitet werden.
Gruß, Dirk
Lesezeichen