使用TCP套接字发送消息不返回任何数据

时间:2014-03-03 06:24:18

标签: java android eclipse sockets tcp

我正在使用以下代码

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发送消息的正确方法然后得到响应吗?

2 个答案:

答案 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);

希望这有帮助