Cool, es klappt! Also zumindest das eine 
Es gibt jetzt beim herstellen der Verbindung keine NullPointerException mehr. Danke!
Jetzt gibt es wieder ein anderes Problem.
Wieder eine NullPointerException. Allerdings erst, wenn der oben erwähnte String "identitiy", der die ID des Plugins enthällt, gesendet wurde. Die Fehlerausgabe ist folgende:
Exception in thread "Thread-2" java.lang.NullPointerException
at main.RSS.registerPlugin(RSS.java:9)
at main.Client.start(Client.java:41)
at main.Client.<init>(Client.java:26)
at main.Server.run(Server.java:19)
at java.lang.Thread.run(Thread.java:595)
Da ich am Code von Client.java noch ein bisschen gewerkelt hab ist hier ein update:
Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class Client
{
private Socket s;
private Thread t;
private BufferedReader in;
private PrintStream out;
private int id;
public Client(Socket cs)
throws IOException
{
s = cs;
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out = new PrintStream(s.getOutputStream());
id = Integer.parseInt(in.readLine());
start();
}
public final int getID()
{
return id;
}
public void sendMessage(String msg)
{
out.print(msg);
}
private void start()
{
RSS.registerPlugin(getID(), this);
t = new Thread(new Input());
t.start();
}
private void end()
throws IOException, InterruptedException
{
RSS.unregisterPlugin(getID());
s.close();
t.join();
}
class Input
implements Runnable
{
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());
}
catch(InterruptedException e)
{
System.out.println(e.getMessage());
}
}
}
}
Der wesentliche Unterschied besteht darin, das der Thread jetzt nicht mehr Client selber sonder eine Unterklasse, Input, ist.
Der betreffende Code aus RSS.java ist folgender:
Code:
private static Client clients[];
public static void registerPlugin(int id, Client client)
{
clients[id] = client;
}
Ich hoffe mir kann jemand helfen?
Danke.
Gruß, Jan.
Lesezeichen