最近要做一个端口扫描器,想求教各位怎样才获取端口的名称(or信息),比如说21端口的名称File Transfer ,25端口为Simple Mail Transfer等,谢谢!

解决方案 »

  1.   

    见 C:\WINNT\system32\drivers\etc\SERVICES 文件# Copyright (c) 1993-1999 Microsoft Corp.
    #
    # This file contains port numbers for well-known services defined by IANA
    #
    # Format:
    #
    # <service name>  <port number>/<protocol>  [aliases...]   [#<comment>]
    #
    ......
      

  2.   

    或者这里,有最新的
    http://www.iana.org/assignments/port-numbers
      

  3.   

    估计这个函数就是解析 C:\WINNT\system32\drivers\etc\SERVICES 文件 得到的,你可以修改这个文件中的某个端口名, 然后调用 getprotobynumber 看看得到的protocol name是不是跟着变了
      

  4.   

    2楼正解,系统程序也是这么干的。可参见ReactOS的netstat的源码,如果没记错的话
      

  5.   

    能获得端口名称?端口名称不是可以自定义的吗?比如80是HTTP,但是我也可以占用它为我程序所有,那这个时候80端口就不是http了
      

  6.   

    谢谢各位!
    我就是希望能获得各个端口的描述,就像这幅图显示的一样,就是端口号后的描述信息,用getprotobynumber得到到的不对呀
      

  7.   


    谢谢各位!
    我就是希望能获得各个端口的描述,就像这幅图http://softhard.blogbus.com/logs/41378049.html显示的一样,就是端口号后的描述信息,用getprotobynumber得到到的不对呀
      

  8.   

    api不是万能的很多东西还是要你自己写的
      

  9.   


    返回的 是一个 protoent 结构体~他里面的 p_namep_name 
    Official name of the protocol. 
      

  10.   

       去google下,这个是基本函数吧