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