我正在使用以下代码
OutputStream out = socket.getOutputStream();
PrintWriter output = new PrintWriter(out);
@SuppressWarnings("unused")
byte[] b = message.getBytes("US-ASCII");
String convertedString = Normalizer.normalize(message, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "");
Log.d("ASCII", convertedString);
output.println(convertedString);
Log.e("TCP Message sent", convertedString);
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//read line(s)
String st = input.readLine();
Log.e("TCP Message received", st);
但我被困在String st = input.readLine();它只是挂在那里,永远不会进入下一行。这是使用TCLP发送消息的正确方法然后得到响应吗?
答案 0 :(得分:0)
你被readLine()
卡住了,因为连接仍处于打开状态 - 安卓仍在等待更多数据进入,因此无法继续前进。
这就是我所做的,但这是否可行可能取决于你所遵循的协议。
StringBuilder builder = new StringBuilder();
String line;
while ((line = input.readLine()) != ""){
builder.append(line);
}
Log.i("data", builder.toString());
答案 1 :(得分:0)
发送邮件后,您需要flushing your output stream
:
output.flush();
或通过在创建输出流时传递true来使用自动刷新,如下所示:
PrintWriter output = new PrintWriter(out, true);
希望这有帮助