【问题标题】:how to read incoming data from socket in android如何从android中的套接字读取传入数据
【发布时间】:2015-05-21 11:11:58
【问题描述】:

我在我的 android 应用程序中创建了一个套接字,当我连接到服务器时,我为此套接字创建了一个 InputStream 以读取来自服务器的传入数据:

socket = new Socket(address, port);

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(1024);
byte[] buffer = new byte[1024];

int bytesRead;
InputStream inputStream = socket.getInputStream();
         while ((bytesRead = inputStream.read(buffer)) != -1){
             byteArrayOutputStream.write(buffer, 0, bytesRead);
             response += byteArrayOutputStream.toString("UTF-8");
             // the execution is blocked at this line and does not get out  
             //from the while
         }
  }

在获取输入流后,我尝试读取字节并填充一个字符串(响应),但是当从服务器读取所有数据时,它会阻塞在 while-loop 内。这意味着 while 中的条件不满足。我正在发送这样的短语:“你好,你好吗”

【问题讨论】:

  • 我从 c# 代码发送消息(服务器端的控制台应用程序)
  • I'm sending phrases like this: "hello how are you"。你最好让服务器发送诸如“你好,你好吗?\n”之类的短语或行。并且在您的客户端中使用 BufferedInputStreamReader 左右才能使用 .readLine()。如果你只发短信就可以了。
  • 我尝试像这样BufferedReader r = new BufferedReader(new InputStreamReader(inputStream)); while ((line = r.readLine()) != null) { response+=line; } .readLine() 但是当我读取第一行时它的块直到我发送另一行,所以结果相同

标签: java android sockets


【解决方案1】:

也许您应该在 \n 到达或来自服务器的类似情况时中断 while 循环。循环仍在等待读取新数据。

【讨论】:

    猜你喜欢
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 2011-10-22
    相关资源
    最近更新 更多