求如何由ip得到对方的操作系统是什么版本的代码

解决方案 »

  1.   

    知道IP后,与对方的NETBIOS连接对话,就可以取得对方的操作系统及版本号。
    但这只限于Microsoft的操作系统。
      

  2.   

    nmap是什么,我在msdn上看到了的但是用不出来,有成功的吗
      

  3.   

    我在linux下用过nmap,它是一个与网络有关的应用程序,
    输入:你要检查的机器的ip地址
    输出:机器的操作系统名称,机器当前运行的服务,还有服务的端口号等。
    大概就是这个样子的。你到google上查一下吧
      

  4.   

    源码可以下的,我就下了一个
    http://www.insecure.org/nmap/nmap_download.html
    在Source Distribution这一栏
      

  5.   

    DWORD dwLevel = 101;
    LPSERVER_INFO_101 pBuf = NULL;
        NET_API_STATUS nStatus;
        LPTSTR  pszServerName ="219.140.19.111";   nStatus = NetServerGetInfo(pszServerName,
                                  dwLevel,
                                  (LPBYTE *)&pBuf);
       
       if (nStatus == NERR_Success)
       {   
          if ((pBuf->sv101_type & SV_TYPE_DOMAIN_CTRL) ||
             (pBuf->sv101_type & SV_TYPE_DOMAIN_BAKCTRL) ||
             (pBuf->sv101_type & SV_TYPE_SERVER_NT))
             printf("This is a server\n");
          else
             printf("This is a workstation\n");
       }   
       else
       {
    //fprintf(stderr, "A system error has occurred: %d\n", nStatus);
       switch(nStatus)
    {
        case ERROR_ACCESS_DENIED :
    //The value specified for the level parameter is invalid.  
    ::MessageBox(NULL,"ERROR_ACCESS_DENIED",NULL,0);
    break;      case ERROR_INVALID_LEVEL :
    //The value specified for the level parameter is invalid. 
    ::MessageBox(NULL,"ERROR_INVALID_LEVEL",NULL,0);
    break; case ERROR_INVALID_PARAMETER :
    //The specified parameter is invalid. 
    ::MessageBox(NULL,"ERROR_INVALID_PARAMETER",NULL,0);
    break;

    case ERROR_NOT_ENOUGH_MEMORY: 
    //Insufficient memory is available. 
    ::MessageBox(NULL,"ERROR_NOT_ENOUGH_MEMORY",NULL,0);
    break; case ERROR_BAD_NETPATH: 
    //  The network path was not found.
    ::MessageBox(NULL,"ERROR_BAD_NETPATH",NULL,0);
    break;

    } }
       
       if (pBuf != NULL)
          NetApiBufferFree(pBuf);
    老是返回错误