串口工具作为服务端往App发送数据内容时,App这边没有接收到,在我关闭串口工具时,App接收到了,感觉是线程阻塞的问题。后来用Wireshark监控了一下,发现串口工具(服务端)是在一始就发送的,不知道为什么,在我关闭串口工具之后,App端才收到数据内容。然后,我就发现我被readLine()方法给坑了,有没有什么方法解决我一下代码中的readLine()的阻塞问题。
case R.id.submit:
//TODO 把数据提交的方式写在这里
new Thread(new Runnable() {
@Override
public void run() {
String message1 = projName1.getText().toString();
try {
socket = new Socket("192.168.3.50",777); //IP地址、端口号
//向服务器发送消息
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"UTF-8")), true);
out.write(message1);
out.flush();
//接收服务器的消息
br = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));
String info = null;
while ((info = br.readLine())!=null){
projName1.setText(info);
}
//关闭资源
br.close();
out.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
break;
}
}