簡體   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