Android套接字连接

时间:2016-04-16 11:48:37

标签: java android sockets exception freeze

尝试运行循环以检查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()只是我定义的“全局”端口号 编辑:返回2683(只是一个随机数)

它应该只是捕获异常然后继续使用for循环,但这不会发生。

目前只打印:

10.0.0.0

10.0.0.1

然后冻结。

如果有人有任何建议会很棒!

编辑

  • 使用socket.connect(新的InetSocketAddress(ip,port),timeout)方法仍然无法正确处理

  • 这是在AsyncTask扩展类中,在doInBackground()方法中

1 个答案:

答案 0 :(得分:2)

没有套接字服务器可以监听这些IP和端口。所以你的套接字客户端将被冻结。如上所述here,您应该为套接字使用另一个构造函数,并设置超时以防止冻结。

for (int z = 0; z < 100; z++) {
    String ip = "10.0.0." + z;
        try {
            log(ip);
            Socket socket = new Socket();
            socket.connect(new InetSocketAddress(ip, MainActivity._util.getPort()), 1000);
            // Handle Stuff when Exception NOT throw
        } catch (Exception e) {
        }
}