繁体   English   中英

Android Socket InputStream问题

[英]Android Socket InputStream problem

我有一个用 VB 编写的服务器,它以 3 秒的时间向客户端发送数据。 我编写了一个客户端 Java 代码,如下所示:

class Commu extends Thread {
   Socket socket;
   InputStream inputStream;
   OutputStream outputStream;

   public Commu() {
      try {
         socket=new Socket();
         socket.connect(new InetSocketAddress("192.168.0.1", 1234)));

         inputStream=socket.getInputStream();
         outputStream=socket.getOutputStream();
         this.start();
      } catch(Exception e) {
         System.out.println(e);
      }
   }

   public void run() {
      while(true) {
         byte[] buffer=new byte[1024];
         inputStream.read(buffer);
         System.out.println(buffer[0]);
      }
   }
}

它在我的桌面上运行良好,每当 VB 服务器发送消息时它都会打印消息。

它适用于Android,但inputStream只读一次,然后卡住; 如果我想读取更多的数据,我必须使用outputStream发送一些数据,然后inputStream将读取一次,并再次卡住。 真的很奇怪,谁能告诉我为什么?

System.out.print()没有问题,因为 DDMS 可以显示,我保证! 问题是inputStream不应该只读取一次,它应该在数据到来时读取。 但它没有,它只读了一次。

即使我只从缓冲区打印一个字节,它也会卡在 Android 上。 它在台式机上运行良好,但卡在 Android 上。

这是一段奇怪的代码。 您不检查 read() 的返回值是否为 -1,即 EOS,并且您只显示接收到的数据的第一个字节并将 rest 扔掉。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM