【发布时间】:2012-08-13 22:41:05
【问题描述】:
我正在尝试通过以下代码 ping 各种 IP 来检查连接。
ipAdd = InetAddress.getByName(ipAddress);
boolean isConnected = ipAdd.isReachable(3000);
但我收到此错误。
java.net.ConnectException: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full
大约有 1000 个线程同时执行此过程。我曾考虑将这些 IP 保留在队列中。但为此我想知道我可以使用的最大线程数。有没有办法找出缓冲区空间,以便我可以计算出将同时触发的线程数,这些线程将运行上述代码。 除了排队方法之外,我将不胜感激任何其他解决方法/解决方案。
【问题讨论】:
-
你今天googled了吗?
-
我已经浏览了那个链接。我知道这是操作系统的限制,但我制作了一个单独的程序,我可以轻松地一次达到 3000 个 IP。但是在我的应用程序代码中,它本身就显示了 1000 个线程的错误。
-
在调用 isReachable 方法时是否打开任何连接。如果是,那么是否需要关闭它?也让我知道怎么做。