Hi.

Ich hab das jetzt ausprobiert. Leider war das nicht die Lösung, die NullPointerException besteht weiterhin. Aber das hattest du ja schon vermutet.
Ich hab mir das jetzt mal genauer angeguckt: Die Exception tritt immer dann auf, wenn die Verbindung hergestellt wird, also der ClientSocket eine Anfrage sendet. Die Ausgabe lautet:

Exception in thread "Thread-2" java.lang.NullPointerException
at main.Client.<init>(Client.java:23)
at main.Server.run(Server.java:18)
at java.lang.Thread.run(Thread.java:595)


Die betreffenden Zeilen sind in Client.java:

in = new BufferedReader(new InputStreamReader(s.getInputStream()));

Also die Initialisierung eines BufferedReader, der den InputStream des Sockets ausließt.

In Server.java:

c = new Client(sv.accept());

(siehe Oben)

und in java.lang.Thread:

public void run() {
if (target != null) {
target.run();
}
}

Letzeres finde ich recht seltsam?! Wenn ich das richtig verstehe gibt es also ein Problem beim starten des Threads? Ich hab hier jetzt mal den Code von Client.java hochgeladen:

Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;

public class Client
implements Runnable
{
	private Socket s;
	private Thread t;
	private BufferedReader in;
	private PrintStream out;
	private int id;
	
	public Client(Socket s)
	{
		try
		{
			s = this.s;
			in = new BufferedReader(new InputStreamReader(s.getInputStream()));
			out = new PrintStream(s.getOutputStream());
			
			String identety = in.readLine();;
			id = Integer.parseInt(identety.substring(0,2));
			
			start();
		}
		catch(IOException e)
		{
			System.out.println(e.getMessage());
		}
	}
	
	public final int getID()
	{
	   return id;
	}
	
	public void sendMessage(String msg)
	{
		out.print(msg);
	}
	
	private void start()
	{
		RSS.registerPlugin(getID(), this);
		
		t = new Thread(this);
		t.start();
	}
	
	private void end()
	{
		try
		{
			RSS.unregisterPlugin(id);
			s.close();
			t.join();
		}
		catch(IOException e)
		{
			System.out.println(e.getMessage());
		}
		catch(InterruptedException e)
		{
			System.out.println(e.getMessage());
		}
	}
	
	public void run()
	{
		try
		{
			while(s.isConnected() == true)
			{
				String input = in.readLine();
				int tgid = Byte.parseByte(input.substring(0,2));
				String msg = input.substring(2);
				RSS.messagePlugin(tgid,msg,id);
			}
			
			if(s.isClosed() == true)
				end();
			else
				run();
		}
		catch(IOException e)
		{
			System.out.println(e.getMessage());
		}
	}
}
Wie man sieht implementiert Client.java das Interface Runnable, also ist es ein Thread.
Könnte das Problem darin bestehen, das ich ein neues Client-Object anlege, es aber nicht als Thread starte?

Naja, ich hoff mal mir kann da jemand weiterhelfen.
Danke.

Gruß, Jan.