套接字连接断开

时间:2019-10-29 18:30:39

标签: java sockets port

我创建了一个具有多线程的端口扫描程序,可以扫描端口(从1开始并以数字递增)。 它可以在我的LAN上正常工作,但是如果我尝试扫描LAN之外的IP,则说所有端口都已关闭,我认为这是因为防火墙阻止了连接?

有什么方法可以检查端口是否在我的LAN之外的IP地址上打开了?这是我得到的代码

for (int port = startPort; port < 65535; port+=PortScanner.count) 
        {
            Socket socket;
                try 
                {
                    socket = new Socket();
                    socket.connect(new InetSocketAddress(host, port ), 500);

                    openPorts.add(port);

                    foundPort = true;
                    String temp = "Port " + port + " is open.\n";
                    System.out.write(temp.getBytes());

                    socket.close();
                }
                catch (IOException ioEx) 
                {
                    System.out.println("Port " + port + " is closed");
                }
         }
         Thread.yield();

2 个答案:

答案 0 :(得分:1)

  1. 而不是扫描主机的所有端口,而是检查多台主机上的端口,如果要扫描多台主机,则检查另一个端口...
  2. 您可以考虑只使用众所周知的端口,而不是对端口进行全面扫描[1]。
  3. 使您的代码处于睡眠状态,增加通过防火墙的机会,但会增加扫描时间。
  4. 您可以使用一些代理服务来更改每个请求的IP [2]。
  5. 请参阅“使用Java扫描端口的最佳方法” [3]

[1] https://www.webopedia.com/quick_ref/portnumbers.asp
[2] https://luminati.io/proxy-networks/residential-ips
[3] Fastest way to scan ports with Java

答案 1 :(得分:-1)

在进行测试时以及实际运行扫描仪时,我建议您使用代理服务,以便您了解问题发生的时间和地点(如果问题仍然存在)。您可以找到许多在这种情况下有用的代理提供程序,但我建议您检查一下:

在测试各种程序,机器人程序,扫描仪,工具等方面,它们提供了很多功能,工作迅速且非常出色。