设置readLine()的超时限制?

7
我有以下代码,使用Java中的Sockets从POP服务器读取响应。但问题是,有时当我使用readLine()函数从服务器读取数据时,如果服务器没有回复任何响应,我的应用程序将挂起,等待服务器响应。
socket.connect(new InetSocketAddress("pop.server.com", 110), 3000);
input = socket.getInputStream();
BufferedReader incoming = new BufferedReader(new InputStreamReader(input));
incoming.readLine();   //This line will cause my application to hang if the server does not respond with a reply

是否有一种方法可以设置超时或其他方式,当服务器在一定时间内没有回复时,应用程序应该停止等待响应并继续执行其他操作?


你为什么不使用Javamail? - user207421
1个回答

4

2
这种情况下,读取整行不会超时。但是如果客户端不断发送字节而没有结束行呢? - grom
@grom 这是一个风险。客户总是可以发送无尽的数据,导致内存错误。如果您需要自定义处理,您必须自己编写代码。 - Peter Lawrey
1
@grom,你可以在自己的while循环中使用Read()方法。该方法只读取一个字符。如果与超时结合使用,您应该能够实现想要的功能。 并不完全等同于“自己编写代码” :) - Martin Clemens Bloch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接