开发者

can i speed up the scanning port process?

import java.net.*;

import java.io.IOException;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class PortScanner {

     public static void main(String[] args) {
     InetAddress ia=null;
     String host=null;
         try {

         host=JOptionPane.showInputDialog("Enter the Host name to scan:\n example: example.com");
             if(host!=null){
             ia = InetAddress.getByName(host);
         scan(ia); }
     }
         catch (UnknownHostException e) {
         System.err.println(e );
     }
     System.out.println("Bye from NFS");
     //System.exit(0);
 }

    public static void scan(final InetAddress remote) {
    //variables for menu bar

    int port=0;
    S开发者_StackOverflowtring hostname = remote.getHostName();

         for ( port = 70; port < 65536; port++) {
             try {
             Socket s = new Socket(remote,port);
             System.out.println("Server is listening on port " + port+ " of " + hostname);
             s.close();
             break;
         }
             catch (IOException ex) {
             // The remote host is not listening on this port
             System.out.println("Server is not listening on port " + port+ " of " + hostname);
         }
     }//for ends
 }
}

please help me.


I am not sure if this will speed things up, but since each socket your making is independent of the next socket, have you tried making more threads so that you can create new sockets when older sockets are waiting for their handshake to complete.


Instead of using the line

Socket s = new Socket(remote,port);

You should use

Socket s = new Socket();
int timeout = 100; // milliseconds
s.connect( new InetSocketAddress( remote, port ), timeout );

This way you won't have to wait for the default TCP timeout to see that this port is blocked by a firewall without any response.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜