starbuck86
Mitglied
Hallo Comm.
Ich habe für mein Projekt eine Klasse erstellt, in der ein Socket-Server läuft, welcher dynamisch Connections annimmt und OutputStream und InputStream-Objekte zuweist. Diese Klasse ist als Thread über eine Hauptklasse gestartet.
Dazu gibt es eine zweite Klasse, die ebenfalls als Thread gestartet wird. Diese Klasse sendet in einer Endlosschleife der vorhandene Connections über das out Objekt die Zahl 7.
Jedenfalls in der Theorie.
In der Praxis sieht es allerdings etwas anders aus.
Sobald ich über out.write(7); (2.Quellcode, Zeile 8) etwas schreiben will bekomme ich eine NullPointerException.
Kann mir einer sagen, warum ich diese Meldung bekomme?
Ich lass mir doch das OutputStream-Objekt out zurückgeben mit der selbst definierten Methode getOutputStream() - dachte ich zumindest.
Gruß && Danke
Thomas
Ich habe für mein Projekt eine Klasse erstellt, in der ein Socket-Server läuft, welcher dynamisch Connections annimmt und OutputStream und InputStream-Objekte zuweist. Diese Klasse ist als Thread über eine Hauptklasse gestartet.
Java:
public class SServer implements Runnable {
private static Socket[] client = new Socket[10];
private static OutputStream[] out = new OutputStream[10];
private static InputStream[] in = new InputStream[10];
public void handleConnection(int count) throws IOException {
in[count] = client[count].getInputStream();
out[count] = client[count].getOutputStream();
out[count].write(1);
}
public OutputStream getOutputStream (int z){
return out[z];
}
public Socket getSocket (int z){
return client[z];
}
ServerSocket server1 = null;
Socket client_default = null;
public void run()
{
try { //Socket-Server starten
server1 = new ServerSocket(14002);
while (true) {
try { //Clients annehmen
client_default = server1.accept();
if (client_default != null){
for (int i=0; i < client.length; i++) {
if (client[i] == null) {
client[i] = client_default;
handleConnection(i);
break;
}
}
client_default = null;
}
} catch (IOException e) {
e.printStackTrace();}
} //Endlosschleife zum Annehmen der neuen Connections
} catch (IOException ioe) {
ioe.printStackTrace();}
}
}
Dazu gibt es eine zweite Klasse, die ebenfalls als Thread gestartet wird. Diese Klasse sendet in einer Endlosschleife der vorhandene Connections über das out Objekt die Zahl 7.
Jedenfalls in der Theorie.
In der Praxis sieht es allerdings etwas anders aus.
Sobald ich über out.write(7); (2.Quellcode, Zeile 8) etwas schreiben will bekomme ich eine NullPointerException.
Java:
public class SServer_send extends SServer implements Runnable {
public void run() {
try {
while (true) {
for (int j=0; j<=9; j++) {
if (getSocket(j) != null) {
System.out.println(getSocket(j)+"\n");
getOutputStream(j).write(7);
//closeConnection(j);
}
}
}
} catch (IOException x) {
x.printStackTrace();
}
}
}
Kann mir einer sagen, warum ich diese Meldung bekomme?
Ich lass mir doch das OutputStream-Objekt out zurückgeben mit der selbst definierten Methode getOutputStream() - dachte ich zumindest.
Gruß && Danke
Thomas
Zuletzt bearbeitet: