![](/img/trans.png)
[英]Control Socket InputStream and OutputStream from Fragment (Android)
[英]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.