【发布时间】:2021-10-27 21:59:19
【问题描述】:
我正在从安卓手机向 Java 服务器发送一个请求,它在服务器端收到但无法在手机上得到响应 不知道为什么无法得到回复
下面是我的代码
private Socket client;
private PrintWriter printwriter;
class ClientThread implements Runnable {
private final String message;
ClientThread(String message) {
this.message = message;
}
@Override
public void run() {
try {
// Creates a stream socket and connects it to the specified port number on the named host.
client = new Socket("192.168.0.88", 8094); // connect to server
printwriter = new PrintWriter(client.getOutputStream(),true);
printwriter.write(message); // write the message to output stream
Log.d("server request", message);
printwriter.flush();
printwriter.close();
runOnUiThread(new Runnable() {
@Override
public void run() {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = reader.readLine();
// Read Server Response
Log.d("server response", line);
} catch (Exception e){
e.printStackTrace();
}
}
});
// closing the connection
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
【问题讨论】:
-
printwriter.close();不要这样做,因为它也会关闭套接字。 -
并且不要使用 runOnUiThread 从流中读取。所有互联网代码都应该在一个线程中完成。而且你已经在一个线程中..
-
进一步你应该知道服务器正在发送什么。
-
服务器正在发送一个字符串作为确认
-
但是字符串并不总是一行,您使用 readLine() 所以让服务器发送一行。你为什么不调整你的代码呢?
标签: java android sockets server