【问题标题】:how to read data from socket in android如何从android中的socket读取数据
【发布时间】:2014-04-07 11:52:08
【问题描述】:

我想将我的 android 应用程序与 RN171 连接。

这是我的代码:

try{


InetAddress modemAddr = InetAddress.getByName("1.2.3.4");
        Socket socket = new Socket(modemAddr, 2000);
        PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
        out.println("$$$");
        out.println("get everything");
        socket.close();
        InetAddress modemAddr2 = InetAddress.getByName("1.2.3.4");
        Socket socket2 = new Socket(modemAddr2, 2000);
        BufferedReader in = new BufferedReader(new InputStreamReader(socket2.getInputStream()));
        String inMsg = "";
        StringBuilder total = new StringBuilder();
        String line;
        while ((line = in.readLine()) != null) {
            total.append(line);

            AlertDialog.Builder builder = new AlertDialog.Builder(this);
         builder.setTitle("Response");// Set the Title of Alert Dialog
         builder.setMessage(total.toString())
         .setPositiveButton("OK",dialogClickListener).show();
        }
 socket2.close();

}
catch(Exception e)
{
  AlertDialog.Builder builder = new AlertDialog.Builder(this);
  builder.setTitle("Response");// Set the Title of Alert Dialog
                 builder.setMessage(e.toString())
                 .setPositiveButton("OK",dialogClickListener).show();
}

我正在向 RN171 发送 get everything 命令并希望提醒其输出。

但是应用程序运行了一段时间,并且显示应用程序没有响应的消息。

我该怎么做?

【问题讨论】:

标签: android sockets


【解决方案1】:

您正在读取输入直到流结束,并且在获得它之前不做任何事情。除非设备断开连接,否则您将永远阻塞。您需要在获取每条数据时对其进行处理。

【讨论】:

  • 你的意思是我应该在写入数据后关闭写入套接字并再次打开它进行读取?
  • 能否请您提供一些详细信息,例如,我是 android 新手
  • 我什么也没说。我的意思是我说的。再看一遍。 “在获得数据时处理每条数据”对我来说似乎很清楚。
  • 好的,我应该单独提醒每一行而不是在最后,我想这就是你的意思
  • 这是我所说的。 无需猜测。真让我感到困惑,为什么人们在他们面前已经有了他们实际所说的文字时,为什么还要玩猜测某人的意思的游戏。
猜你喜欢
  • 2013-12-24
  • 1970-01-01
  • 2014-04-14
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-20
相关资源
最近更新 更多