【发布时间】:2016-04-16 11:48:37
【问题描述】:
尝试运行循环以检查 IP 是否打开。
for (int z = 0; z < 100; z++) {
String ip = "10.0.0." + z;
try {
log(ip);
Socket socket = new Socket(ip, MainActivity._util.getPort());
// Handle Stuff when Exception NOT throw
} catch (Exception e) {
}
}
log 是我做的一个函数(没有错误)
.getPort() 只是我定义的“全局”端口号 EDIT:返回 2683(只是一个随机数)
它应该只是捕获异常,然后继续执行 for 循环,但这并没有发生。
目前这只是打印:
10.0.0.0
10.0.0.1
然后冻结。
如果有人有任何建议,那就太好了!
编辑
使用 socket.connect(new InetSocketAddress(ip, port), timeout) 方法仍然没有正确处理
这是在 AsyncTask 扩展类中,在 doInBackground() 方法中
【问题讨论】:
-
您在此处获得的端口:***MainActivity._util.getPort()*** 当您在 for 循环中时,该 int 是否有可能更改其值???
-
ip为false时可能会例外?
-
@jgm 假 IP 是什么意思?
-
首先,尽量不要在每次迭代时创建套接字。此外,有一个 finally { socket.close() }
-
你在哪里调用这个代码?它在活动吗?
标签: java android sockets exception freeze