Hallo,
Ich habe ein Problem mit einem Client in Android Studios, und zwar habe ich mir eine Klasse Client gemacht mit einer Methode zum Verbinden zum Server, diese läuft in einen neuen Thread. Dort initialisiere ich den Input/Outputstream. Wenn ich jetzt eine Nachricht mit der Methode Message schicke funktioniert das einwandfrei und kommt am Server an. Aber, wenn ich eine Nachricht vom Server empfangen will, kommt eine Fehlermeldung(java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.BufferedReader.readLine()' on a null object reference). Wahrscheinlich muss man es die Methode synchronized verwenden aber leider habe ich mich noch nicht wirklich mit Threads beschäftigt und weiß nicht genau wie das geht.
Danke im Vorhinein.
Liebe Grüße
[CODE lang="java" title="Code"]import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.iutputStream;
import java.io.PrintWriter;
import java.net.Socket;
public class Client{
private OutputStream out;
private InputStream in;
private BufferedReader reader;
private PrintWriter writer;
public void start() {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
Socket client = new Socket("192.168.178.21", 5556);
out = client.getOutputStream();
writer = new PrintWriter(out);
in = client.getInputStream();
reader = new BufferedReader(new InputStreamReader(in));
} catch (IOException e) {
e.printStackTrace();
}
}
});
t.start();
}
public void message(String msg) {
writer.write(msg);
writer.flush();
writer.close();
}
public String getServerMessage() {
try {
String s = null;
StringBuilder builder = new StringBuilder();
while((s = reader.readLine())!= null) {
builder.append(s);
}
reader.close();
return builder.toString();
}catch (IOException e ) {
e.printStackTrace();
}
return "error";
}
}
[/CODE]
Ich habe ein Problem mit einem Client in Android Studios, und zwar habe ich mir eine Klasse Client gemacht mit einer Methode zum Verbinden zum Server, diese läuft in einen neuen Thread. Dort initialisiere ich den Input/Outputstream. Wenn ich jetzt eine Nachricht mit der Methode Message schicke funktioniert das einwandfrei und kommt am Server an. Aber, wenn ich eine Nachricht vom Server empfangen will, kommt eine Fehlermeldung(java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.BufferedReader.readLine()' on a null object reference). Wahrscheinlich muss man es die Methode synchronized verwenden aber leider habe ich mich noch nicht wirklich mit Threads beschäftigt und weiß nicht genau wie das geht.
Danke im Vorhinein.
Liebe Grüße
[CODE lang="java" title="Code"]import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.iutputStream;
import java.io.PrintWriter;
import java.net.Socket;
public class Client{
private OutputStream out;
private InputStream in;
private BufferedReader reader;
private PrintWriter writer;
public void start() {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
Socket client = new Socket("192.168.178.21", 5556);
out = client.getOutputStream();
writer = new PrintWriter(out);
in = client.getInputStream();
reader = new BufferedReader(new InputStreamReader(in));
} catch (IOException e) {
e.printStackTrace();
}
}
});
t.start();
}
public void message(String msg) {
writer.write(msg);
writer.flush();
writer.close();
}
public String getServerMessage() {
try {
String s = null;
StringBuilder builder = new StringBuilder();
while((s = reader.readLine())!= null) {
builder.append(s);
}
reader.close();
return builder.toString();
}catch (IOException e ) {
e.printStackTrace();
}
return "error";
}
}
[/CODE]