编程实现,不是用netstat -a命令
如果能得到打开此端口的进程的信息,再送200分

解决方案 »

  1.   

    从1开始循环,自己建立Socket,然后绑定端口,不成功的就是已经在使用的。
    也不知道这样行不行,呵呵。
      

  2.   

    >>从1开始循环,自己建立Socket,然后绑定端口,不成功的就是已经在使用的。
    这个肯定是不行地~~~~~
      

  3.   

    >>我有個例子,但是忘了,明天再給你帶來.行不?現在上班
    OK, Thanks
      

  4.   

    获得当前系统的Tcp所有打开端口及IP地址 
    提交日期:2003-11-22 作者:cjsh 
     
    关键词:TCP 端口 IP地址 Ip Helper API  
    //GetTcpTable函数单元
    unit untIPHLPAPI;interfaceuses
    Windows, sysutils, WinSock;type
    EIpHlpError = class(Exception);
    //----------------TCP结构------------------------------------------------
    PTMibTCPRow = ^TMibTCPRow;
    TMibTCPRow = packed record
    dwState : DWORD;//状态
    dwLocalAddr : DWORD;//本地IP地址
    dwLocalPort : DWORD;//本地端口号
    dwRemoteAddr: DWORD;//远程IP地址
    dwRemotePort: DWORD;//远程端口号
    end;
    //
    PTMibTCPTable = ^TMibTCPTable;
    TMibTCPTable = packed record
    dwNumEntries : DWORD; //Tcp打开的数量
    Table : array[0..0] of TMibTCPRow;
    end;//------------------从IPHLPAPI.DLL输入的API函数----------------------------
    function GetTcpTable(pTcpTable: PTMibTCPTable; var pdwSize: DWORD;
    bOrder: BOOL): DWORD; stdcall;//转换成IP地址形式
    function IpAddressToString(Addr: DWORD): string;
    //GetTcpTable的实现过程
    procedure VVGetTcpTable(var pTcpTable: PTMibTCPTable; var dwSize: DWORD;
    const bOrder: BOOL);
    //转换成端口号
    Function GetTcpPortNumber(aDWord: DWord): Longint;implementationresourcestring
    sNotImplemented = ‘Function %s is not implemented.‘;
    sInvalidParameter = ‘Function %s. Invalid parameter‘;
    sNoData = ‘Function %s. No adapter information exists for the local computer.‘;
    sNotSupported = ‘Function %s is not supported by the operating system.‘;
    const
    iphlpapilib = ‘iphlpapi.dll‘;function GetTcpTable; external iphlpapilib name ‘GetTcpTable‘;
    function IpAddressToString(Addr: DWORD): string;
    var
    InAddr: TInAddr;
    begin
    InAddr.S_addr := Addr;
    Result := inet_ntoa(InAddr);
    end;procedure IpHlpError(const FunctionName: string; ErrorCode: DWORD);
    begin
    case ErrorCode of
    ERROR_INVALID_PARAMETER :
    raise EIpHlpError.CreateFmt(sInvalidParameter, [FunctionName]);
    ERROR_NO_DATA :
    raise EIpHlpError.CreateFmt(sNoData, [FunctionName]);
    ERROR_NOT_SUPPORTED :
    raise EIpHlpError.CreateFmt(sNotSupported, [FunctionName]);
    else ;
    RaiseLastWin32Error;
    end;
    end;procedure VVGetTcpTable(var pTcpTable: PTMibTCPTable; var dwSize: DWORD;
    const bOrder: BOOL);
    var
    Res: DWORD;
    begin
    pTcpTable := Nil;
    dwSize := 0;
    if @GetTcpTable = Nil then
    raise EIpHlpError.CreateFmt(sNotImplemented, [‘GetTcpTable‘]);
    Res := GetTcpTable(pTcpTable, dwSize, bOrder);
    if Res = ERROR_INSUFFICIENT_BUFFER then
    begin
    Getmem(pTcpTable, dwSize);
    FillChar(pTcpTable^, dwSize, #0);
    Res := GetTcpTable(pTcpTable, dwSize, bOrder);
    end;
    if Res <> NO_ERROR then
    IpHlpError(‘GetTcpTable‘, Res);
    end;Function GetTcpPortNumber(aDWord: DWord): Longint;
    begin
    Result := Trunc(aDWord / 256 + (aDWord Mod 256) * 256);
    end;end. //演示例子
    procedure TFmIpTest.BtGetTcpTableClick(Sender: TObject);
    var
    pTcpTable: PMibTcpTable;
    dwSize: DWORD;
    i: integer;
    begin
    Memo1.Lines.Add(‘GetTcpTable‘);
    VVGetTcpTable(pTcpTable, dwSize, False);
    if pTcpTable <> nil then
    try
    Memo1.Lines.Add(‘ NumEntries: ‘ + IntToStr(pTcpTable^.dwNumEntries));
    Memo1.Lines.Add(‘ Local Address Port Remote Address Port State‘);
    for i := 0 to pTcpTable^.dwNumEntries do
    with pTcpTable^.table[i], Memo1.Lines do
    begin
    Add(Format(‘ %15s %5d %15s %5d %5d‘, [IpAddressToString(dwLocalAddr),
    GetTcpPortNumber(dwLocalPort), IpAddressToString(dwRemoteAddr),
    GetTcpPortNumber(dwRemotePort), dwState]));
    end;
    finally
    Freemem(pTcpTable);
    end;
    end; 
    http://nssoft.net/showdoc.asp?did=843
      

  5.   

    我这里有一个非常完整的连接察看程序,可以察看有哪些程序打开了哪些端口,数据收发流量等等信息,推荐下载,但是是VB的,楼主可以参考一下。http://www.applevb.com/sourcecode/XP%20connector.zip
      

  6.   

    貼上來太麻煩,請移步去我的網絡硬盤下載吧.
    http://sail2000.ys168.com/
    進入   Other   目錄,找  Ports_Mapp.rar   這個壓縮包.這個不是我寫的,隻是以前找例子的時候找的.
      

  7.   

    用这个两个函数
    DWORD GetTcpTable(PMIB_TCPTABLE pTcpTable, DWORD dwSize, BOOL bOrder);
    DWORD GetUdpTable(PMIB_UdpTABLE pUdpTable, DWORD dwSize, BOOL bOrder);
    功能和netstat 一样
      

  8.   

    谢谢各位
    呵呵,主动要分的都给了,矜持的就没有分了~~~
    lemon_wei(soft_fans) 你说的TechnoFantasy已经给出了实现代码。
    sailxia(小帆)到这个帖子领分:
    http://community.csdn.net/Expert/topic/4071/4071990.xml?temp=.5136682