2011-02-24 11 views
1

タイトル。ここでAndroidソケットがニースを再生していません

はコードです:私が持っている

InputStream is = tcp.getInputStream(); 
      int bytesRead = 0; 
      do{ 
       byte[] byteIn = new byte[16* 1024]; 
       bytesRead = is.read(byteIn, 0, 16*1024); 
       pStore.storeData(byteIn, 1024); 
       processMessage(pStore.readAll()); 
       pStore.clear();    
      }while(bytesRead>0); 

問題は、それがwhileループの終わりに到達したことがないということです。どんな提案も高く評価されます。

感謝:)

答えて

3

のJavadoc InputStream.read()には言う:

、このメソッドはブロックは、入力されたデータは、あなたが見ることになるかもしれないものである可能な

になるまで。

最初に読み込むデータがある場合は、InputStream.available()でテストすることができます。

+0

いいえ、それはデータを取得しますが、ループを離れることはありません。これはループを通過します。つまり、デバッガのステートメントでハングしませんが、ストリームの最後に到達しないようです。それはあなたがそれをやろうとしていることを知っている方法とそれ以来本当に迷惑です... – Taffy

+1

ストリームの終わりに達していることを知ることはできません。データがあります。その時点で、もはやそれが終了したことを示すことはなくなりました。それが停止する唯一の方法は、おそらく(結局)接続の喪失というエラーに応答することです。 –

+0

ありがとう、大変感謝しています:) – Taffy

関連する問題