0

在我的应用程序中,我有客户端和服务器程序,只要服务器从客户端获得连接,服务器就会将所有可用的 ID 从 MySQL 表发送到客户端,为此我使用了 while 循环来读取文件的内容。

我尝试了以下代码:

while((a=in.read())!=-1)

但是当文件中没有内容来读取while循环时我的问题没有退出,它本身就停在那里。如何退出while循环?

4

2 回答 2

1

in.read()将阻塞直到有数据可供读取。请参阅 API 文档http://docs.oracle.com/javase/6/docs/api/java/io/InputStream.html#read()

此方法会一直阻塞,直到输入数据可用、检测到流结束或引发异常。

您可以in.available()在执行 in.read() 之前检查是否有任何字节可供读取。

于 2013-02-12T05:41:18.283 回答
0

您不应该使用while循环,而应该使用线程,线程将等待来自套接字的输入,当数据可用时它将读取,然后它将发送/处理在流中找到的输入。使用 while 和等待(阻塞)你的主线程不是一个好主意

于 2013-02-12T05:40:42.027 回答