1
我有一臺用VB編寫的服務器,它在3秒內向客戶端發送數據。我寫了一個客戶端的Java代碼:Android Socket InputStream問題
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上卡住了。
我想你刪除了有趣的事情(在while循環中)。另外,使用Log.d()而不是system.out.println ... – MByD 2011-05-29 09:01:04