程序具体要求实现以下任一程序:
高效端口扫描器设计与实现:参照常见端口扫描器,在局域网内,能对所有计算机进行常用端口的高速扫描,给出扫描结果。另外根据配置不同的网段,实现正对校园网络的基于网段的高速扫描(可采用分布式方式)
偶是新手,java基础才刚学完一半,希望高手指点下 

解决方案 »

  1.   

    是不是用java循环执行cmd命令,比如telnet ftp netstat等
      

  2.   

    使用socket一个一个的连接,能连上的就是打开的,可以多开点线程连。
      

  3.   

    如2楼所说,以前写的一个比较白痴的,就是不停的连对方机器#include <stdio.h>
    #include <windows.h>
    #include <winsock.h>
    #pragma comment(lib,"ws2_32.lib")
    void main(int argc ,char * argv[]) {
    WORD wVersionRequested;
    WSADATA wsaData;
    int err;wVersionRequested = MAKEWORD( 2, 2 );err = WSAStartup( wVersionRequested, &wsaData );
    if ( err != 0 ) {
      return;
    }if ( LOBYTE( wsaData.wVersion ) != 2 ||
       HIBYTE( wsaData.wVersion ) != 2 ) {                                 
      WSACleanup( );
      return; 
    }if (argc != 4) {
      printf("缺少命令行参数!\n");
      printf("用法如下:scan.exe IP 开始端口 终止端口\n");
      exit(-1);

    int startport = atoi(argv[2]);
    int endport = atoi(argv[3]);
    SOCKET s = socket(AF_INET,SOCK_STREAM,0);
    struct sockaddr_in addr;
    addr.sin_family = AF_INET;
    addr.sin_addr.S_un.S_addr = inet_addr(argv[1]);
    for (int i = startport;i < endport;i ++) {  addr.sin_port = htons(i);
      if (connect(s,(struct sockaddr*)&addr,sizeof(addr)) != SOCKET_ERROR) {
       printf(" port %d is open!\n",i);
      } else {
       printf("port %d is closed!\n",i);
      }
    }
    }
      

  4.   

    我有个做的差不多的JAVA扫描端口的程序,可以发给你!
      

  5.   

    http://pmjava.com/blogview.asp?id=355
    贴出来了!
      

  6.   

    因为java程序是执行在JVM中的,所以直接操作硬件是不可能的.
    此题无解!
      

  7.   

    这是C++吧 ,不是JAVA啊  
      

  8.   

    Socket s=null;
    for(int i=0;i<65535;i++)
    {
    try{
     s=new Socket("IP",i);     //IP 要扫描的
     System.out.println(" 端口"+i+"is open");
     s.close();
       }
      catch(Exception e)
        {
        }
    }
      

  9.   

    汗了,scan 跟硬件有什么关系??拿socket连指定的端口,如果没有报异常,说明这个端口是开放的,报异常了,说明端口关闭或者其它别的原因请求被拦截了(firewall)。
      

  10.   

    用JAVA效率不高。C++搞好些,可以用操作系统的东西。
      

  11.   


    lz执意要用JAVA来做的话,小弟有个建议。使用JNI来做吧!
    用其他语言写好程序后,在用JAVA的JNI来实现!
    扫描的日志,可以记录下来,JAVA程序方便读取就OK