亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? iphelper.pas

?? 實現(xiàn)網(wǎng)絡(luò)流量的分析
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
  TableSize := 0;
   // first call: get memsize needed
  Error := GetIfTable( PTMibIfTable( pBuf ), @TableSize, false );
  if Error <> ERROR_INSUFFICIENT_BUFFER then
    EXIT;
  GetMem( pBuf, TableSize );

   // get table pointer
  Error := GetIfTable( PTMibIfTable( pBuf ), @TableSize, false );
  if Error = NO_ERROR then
  begin
    NumEntries := PTMibIfTable( pBuf )^.dwNumEntries;
    if NumEntries > 0 then
    begin
      inc( pBuf, SizeOf( NumEntries ) );
      for i := 1 to NumEntries do
      begin
        IfRow := PTMibIfRow( pBuf )^;
        with IfRow do
        begin
          SetLength( sDescr, dwDescrLen );
          move( bDescr, sDescr[1], Length( sDescr ) );
          sDescr := trim( sDescr );
          List.Add( Format( '%0.8x| %3d| %16s| %8d| %12d| %2d| %2d| %-s',
            [dwIndex, dwType,
            MacAddr2Str( TMacAddress( bPhysAddr ), dwPhysAddrLen )
              , dwMTU, dwSpeed, dwAdminStatus,
              dwOPerStatus, sDescr] )
              );
        end;
        inc( pBuf, SizeOf( IfRow ) );
      end;
    end
    else
      List.Add( 'no entries.' );
  end
  else
    List.Add( SysErrorMessage( GetLastError ) );
  dec( pBuf, SizeOf( DWORD ) + NumEntries * SizeOf( IfRow ) );
  FreeMem( pBuf );
end;



//-----------------------------------------------------------------------------
{ Info on installed adapters }
procedure Get_AdaptersInfo( List: TStrings );
var
  Error,
    BufLen      : DWORD;
  AdapterInfo   : PTIP_ADAPTER_INFO;
  Descr,
    LocalIP,
    GatewayIP,
    DHCPIP      : string;
begin
  if not Assigned( List ) then EXIT;
  List.Clear;
  BufLen := SizeOf( AdapterInfo^ );
  New( AdapterInfo );
  Error := GetAdaptersInfo( AdapterInfo, @BufLen );
  if Error = NO_ERROR then
  begin
    while ( AdapterInfo <> nil ) do
      with AdapterInfo^ do
      begin
        SetLength( Descr, SizeOf( Description ) );
        Descr := Trim( string( Description ) );
        //
        LocalIP := NULL_IP;
        if IPAddressList.IpAddress[1] <> #0 then
          LocalIP := IPAddressList.IpAddress
        else
          LocalIP := NULL_IP;
        //
        if GateWayList.IPAddress[1] <> #0 then
          GateWayIP := GatewayList.IPAddress
        else
          GateWayIP := NULL_IP;
        //
        if DHCPServer.IPAddress[1] <> #0 then
          DHCPIP := DHCPServer.IPAddress
        else
          DHCPIP := NULL_IP;

        List.Add( Descr );
        List.Add( Format(
          '%8.8x|%6s|%16s|%2d|%16s|%16s|%16s',
          [Index, AdaptTypes[aType],
          MacAddr2Str( TMacAddress( Address ), AddressLength ),
            DHCPEnabled, LocalIP, GatewayIP, DHCPIP] )
            );
        List.Add( '  ' );
        AdapterInfo := Next;
      end
  end
  else
    List.Add( SysErrorMessage( Error ) );
  Dispose( AdapterInfo );
end;

//-----------------------------------------------------------------------------
{ get round trip time and hopcount to indicated IP }
function Get_RTTAndHopCount( IPAddr: DWORD; MaxHops: Longint; var RTT: Longint;
  var HopCount: Longint ): integer;
begin
  if not GetRTTAndHopCount( IPAddr, @HopCount, MaxHops, @RTT ) then
  begin
    Result := GetLastError;
    RTT := -1; // Destination unreachable, BAD_HOST_NAME,etc...
    HopCount := -1;
  end
  else
    Result := NO_ERROR;
end;

//-----------------------------------------------------------------------------
{ ARP-table lists relations between remote IP and remote MAC-address.
 NOTE: these are cached entries ;when there is no more network traffic to a
 node, entry is deleted after a few minutes.
}
procedure Get_ARPTable( List: TStrings );
var
  IPNetRow      : TMibIPNetRow;
  TableSize     : DWORD;
  NumEntries    : DWORD;
  ErrorCode     : DWORD;
  i             : integer;
  pBuf          : PChar;
begin
  if not Assigned( List ) then EXIT;
  List.Clear;
  // first call: get table length
  TableSize := 0;
  ErrorCode := GetIPNetTable( PTMIBIpNetTable( pBuf ), @TableSize, false );
  //
  if ErrorCode = ERROR_NO_DATA then
  begin
    List.Add( ' ARP-cache empty.' );
    EXIT;
  end;
  // get table
  GetMem( pBuf, TableSize );
  ErrorCode := GetIpNetTable( PTMIBIPNetTable( pBuf ), @TableSize, false );
  if ErrorCode = NO_ERROR then
  begin
    NumEntries := PTMIBIPNetTable( pBuf )^.dwNumEntries;
    if NumEntries > 0 then // paranoia striking, but you never know...
    begin
      inc( pBuf, SizeOf( DWORD ) ); // get past table size
      for i := 1 to NumEntries do
      begin
        IPNetRow := PTMIBIPNetRow( PBuf )^;
        with IPNetRow do
          List.Add( Format( '%8x | %12s | %16s| %10s',
                           [dwIndex, MacAddr2Str( bPhysAddr, dwPhysAddrLen ),
                           IPAddr2Str( dwAddr ), ARPEntryType[dwType]
                           ]));
        inc( pBuf, SizeOf( IPNetRow ) );
      end;
    end
    else
      List.Add( ' ARP-cache empty.' );
  end
  else
    List.Add( SysErrorMessage( ErrorCode ) );

  // we _must_ restore pointer!
  dec( pBuf, SizeOf( DWORD ) + NumEntries * SizeOf( IPNetRow ) );
  FreeMem( pBuf );

end;


//------------------------------------------------------------------------------
procedure Get_TCPTable( List: TStrings );
var
  TCPRow        : TMIBTCPRow;
  i,
    NumEntries  : integer;
  TableSize     : DWORD;
  ErrorCode     : DWORD;
  DestIP        : string;
  pBuf          : PChar;
begin
  if not Assigned( List ) then EXIT;
  List.Clear;
  RecentIPs.Clear;
  // first call : get size of table
  TableSize := 0;
  ErrorCode := GetTCPTable( PTMIBTCPTable( pBuf ), @TableSize, true );
  if Errorcode <> ERROR_INSUFFICIENT_BUFFER then
    EXIT;

  // get required size of memory, call again
  GetMem( pBuf, TableSize );
  // get table
  ErrorCode := GetTCPTable( PTMIBTCPTable( pBuf ), @TableSize, true );
  if ErrorCode = NO_ERROR then
  begin

    NumEntries := PTMIBTCPTable( pBuf )^.dwNumEntries;
    if NumEntries > 0 then
    begin
      inc( pBuf, SizeOf( DWORD ) ); // get past table size
      for i := 1 to NumEntries do
      begin
        TCPRow := PTMIBTCPRow( pBuf )^; // get next record
        with TCPRow do
        begin
          if dwRemoteAddr = 0 then
            dwRemotePort := 0;
          DestIP := IPAddr2Str( dwRemoteAddr );
          List.Add(
            Format( '%15s : %-7s|%15s : %-7s| %-16s',
            [IpAddr2Str( dwLocalAddr ),
            Port2Svc( Port2Wrd( dwLocalPort ) ),
              DestIP,
              Port2Svc( Port2Wrd( dwRemotePort ) ),
              TCPConnState[dwState]
              ] ) );
         //
            if (not ( dwRemoteAddr = 0 ))
            and ( RecentIps.IndexOf(DestIP) = -1 ) then
               RecentIPs.Add( DestIP );
        end;
        inc( pBuf, SizeOf( TMIBTCPRow ) );
      end;
    end;
  end
  else
    List.Add( SyserrorMessage( ErrorCode ) );
  dec( pBuf, SizeOf( DWORD ) + NumEntries * SizeOf( TMibTCPRow ) );
  FreeMem( pBuf );
end;


//------------------------------------------------------------------------------
procedure Get_OpenConnections( List: TList );
var
    TCPRow        : TMIBTCPRow;
    i,NumEntries  : integer;
    TableSize     : DWORD;
    ErrorCode     : DWORD;
    DestIP        : string;
    pBuf          : PChar;
    CStat         : PTTcpConnStatus;
begin
    if not Assigned( List ) then EXIT;
    List.Clear;
    //首先取得TCP連接的列表的大小
    TableSize := 0;
    ErrorCode := GetTCPTable( PTMIBTCPTable( pBuf ), @TableSize, true );
    if Errorcode <> ERROR_INSUFFICIENT_BUFFER then
        EXIT;

    //分配內(nèi)存
    GetMem( pBuf, TableSize );
    //取得TCP連接的列表
    ErrorCode := GetTCPTable( PTMIBTCPTable( pBuf ), @TableSize, true );
    if ErrorCode = NO_ERROR then
    begin
    NumEntries := PTMIBTCPTable( pBuf )^.dwNumEntries;
        if NumEntries > 0 then
        begin
            inc( pBuf, SizeOf( DWORD ) );
            for i := 1 to NumEntries do
            begin
            TCPRow := PTMIBTCPRow( pBuf )^;//下一個記錄
                with TCPRow do
                if dwState in [2,5] then//只取兩種狀態(tài)的連接
                begin
                    New( CStat );
                    CStat^.LocalIP   := IPAddr2Str( dwLocalAddr );
                    CStat^.LocalPort := Port2Svc( Port2Wrd( dwLocalPort ));
                    if dwRemoteAddr <> 0 then
                    begin
                        CStat^.RemoteIP := IPAddr2Str( dwRemoteAddr );
                        CStat^.RemotePort :=
                            Port2Svc( Port2Wrd( dwRemotePort ));
                    end
                    else
                    begin
                        CStat^.RemoteIP   := '...';
                        CStat^.RemotePort := '...';
                    end;
                    CStat^.Status := TCPConnState[dwState];
                    List.Add( CStat );
                end;
                inc( pBuf, SizeOf( TMIBTCPRow ) );
            end;
        end;
    end;
    dec( pBuf, SizeOf( DWORD ) + NumEntries * SizeOf( TMibTCPRow ) );
    FreeMem( pBuf );
end;



//------------------------------------------------------------------------------
procedure Get_TCPStatistics( List: TStrings );
var
  TCPStats      : TMibTCPStats;
  ErrorCode     : DWORD;
begin
  if not Assigned( List ) then EXIT;
  List.Clear;
  ErrorCode := GetTCPStatistics( @TCPStats );
  if ErrorCode = NO_ERROR then
    with TCPStats do
    begin
      List.Add( 'Retransmission algorithm :' + TCPToAlgo[dwRTOAlgorithm] );
      List.Add( 'Minimum Time-Out         :' + IntToStr( dwRTOMin ) + ' ms' );
      List.Add( 'Maximum Time-Out         :' + IntToStr( dwRTOMax ) + ' ms' );
      List.Add( 'Maximum Pend.Connections :' + IntToStr( dwRTOAlgorithm ) );
      List.Add( 'Active Opens             :' + IntToStr( dwActiveOpens ) );
      List.Add( 'Passive Opens            :' + IntToStr( dwPassiveOpens ) );
      List.Add( 'Failed Open Attempts     :' + IntToStr( dwAttemptFails ) );
      List.Add( 'Established conn. Reset  :' + IntToStr( dwEstabResets ) );
      List.Add( 'Current Established Conn.:' + IntToStr( dwCurrEstab ) );
      List.Add( 'Segments Received        :' + IntToStr( dwInSegs ) );
      List.Add( 'Segments Sent            :' + IntToStr( dwOutSegs ) );
      List.Add( 'Segments Retransmitted   :' + IntToStr( dwReTransSegs ) );
      List.Add( 'Incoming Errors          :' + IntToStr( dwInErrs ) );
      List.Add( 'Outgoing Resets          :' + IntToStr( dwOutRsts ) );

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区高清在线观看 | 国产成人精品免费视频网站| 国产98色在线|日韩| 欧美丰满少妇xxxxx高潮对白| 中文在线资源观看网站视频免费不卡| 亚洲成人在线免费| 色婷婷亚洲精品| 欧美激情一区二区三区蜜桃视频| 欧美aⅴ一区二区三区视频| 91亚洲国产成人精品一区二区三| 精品国产电影一区二区| 午夜在线电影亚洲一区| 91视频免费观看| 国产欧美日韩在线观看| 精品一区二区三区蜜桃| 69堂成人精品免费视频| 亚洲国产综合人成综合网站| 91在线小视频| 亚洲素人一区二区| 99久久久久免费精品国产| 欧美韩国日本综合| 国产91在线看| 国产精品三级av| 成人免费高清在线| 国产精品视频一二三| 成人性色生活片免费看爆迷你毛片| 精品蜜桃在线看| 激情伊人五月天久久综合| 日韩女优电影在线观看| 免费不卡在线观看| 亚洲精品在线电影| 粉嫩蜜臀av国产精品网站| 久久久久久麻豆| 成人性视频免费网站| 亚洲国产成人午夜在线一区| 国产99久久久国产精品免费看| 国产三级精品视频| 99热精品一区二区| 亚洲一区二区精品久久av| 欧美日韩一区在线观看| 视频一区二区欧美| 日韩精品一区二区三区在线观看| 国产一区二区三区| 国产精品激情偷乱一区二区∴| 成人免费av在线| 亚洲美女免费在线| 91精品国产91久久综合桃花| 久久精品国产精品亚洲综合| 久久久久国产成人精品亚洲午夜 | 久久综合久久综合亚洲| 国产成人在线观看| 亚洲精品视频在线看| 欧美电影在线免费观看| 久久国产生活片100| 国产亚洲欧美色| 91麻豆精东视频| 日本不卡的三区四区五区| 久久久久国产一区二区三区四区| 成人激情视频网站| 偷拍自拍另类欧美| 国产欧美视频一区二区三区| 在线亚洲一区二区| 精品在线观看视频| 亚洲人成7777| 精品剧情v国产在线观看在线| 成人激情免费视频| 日韩成人免费看| 国产精品蜜臀在线观看| 欧美麻豆精品久久久久久| 国产成人8x视频一区二区| 亚洲国产欧美在线| 中文字幕免费一区| 欧美电视剧在线观看完整版| 99久久免费国产| 国产一区久久久| 午夜精品影院在线观看| 国产精品美女久久久久久| 91精品国产高清一区二区三区蜜臀 | 精品欧美一区二区在线观看| 色综合久久九月婷婷色综合| 久久国产精品第一页| 亚洲男同1069视频| 久久精品水蜜桃av综合天堂| 欧美日韩亚洲国产综合| av中文一区二区三区| 国产自产2019最新不卡| 午夜视频在线观看一区| 亚洲欧洲av在线| 精品99久久久久久| 日韩一区二区三区电影在线观看 | 久久久噜噜噜久噜久久综合| 欧美日韩国产首页在线观看| 成人激情免费视频| 国产精品综合在线视频| 久久精品999| 老司机一区二区| 日韩av一区二| 天堂在线亚洲视频| 亚洲自拍欧美精品| 亚洲黄色av一区| 亚洲欧美成人一区二区三区| 国产精品毛片久久久久久| 久久影院午夜论| 2021国产精品久久精品| 日韩视频在线观看一区二区| 欧美日本国产视频| 欧美色精品在线视频| 在线观看国产91| 91国偷自产一区二区三区观看| 成人av资源下载| 色综合一区二区| 在线观看精品一区| 欧美日韩一区在线| 3atv在线一区二区三区| 欧美一级搡bbbb搡bbbb| 日韩欧美二区三区| 久久奇米777| 中文字幕免费观看一区| 一色屋精品亚洲香蕉网站| 中文字幕亚洲在| 亚洲美女淫视频| 午夜电影一区二区| 另类小说综合欧美亚洲| 久久99精品久久久| 国产真实精品久久二三区| 国产乱理伦片在线观看夜一区| 国产美女主播视频一区| 成人在线一区二区三区| 不卡的电影网站| 欧美亚洲国产一卡| 精品少妇一区二区三区在线播放| 久久久影院官网| 亚洲人吸女人奶水| 日韩综合一区二区| 国产精品99久久久久久久vr| 粉嫩一区二区三区在线看| 色婷婷国产精品久久包臀| 欧美日韩国产123区| 精品免费一区二区三区| 一区在线播放视频| 亚洲第一成人在线| 国产精品一卡二卡在线观看| 99r国产精品| 日韩欧美激情在线| 一色屋精品亚洲香蕉网站| 亚欧色一区w666天堂| 国产精品综合久久| 欧美优质美女网站| 久久免费偷拍视频| 亚洲高清免费观看高清完整版在线观看| 日本免费新一区视频| 成人午夜视频在线观看| 欧美精品丝袜中出| 中文字幕日本不卡| 另类小说图片综合网| 91伊人久久大香线蕉| 欧美一区二区观看视频| 国产精品久久久久一区| 日韩高清在线电影| aaa欧美色吧激情视频| 精品蜜桃在线看| 亚洲国产精品自拍| 国产iv一区二区三区| 日韩一区二区三区四区 | 蜜桃一区二区三区四区| 91视频精品在这里| 久久免费偷拍视频| 日本女人一区二区三区| 一本大道av伊人久久综合| 26uuu亚洲| 日韩精品欧美精品| 在线视频一区二区三区| 国产精品欧美综合在线| 国模大尺度一区二区三区| 欧美日韩国产系列| 亚洲精品视频在线| 99热99精品| 中文字幕第一区综合| 国产一区二区剧情av在线| 51精品久久久久久久蜜臀| 亚洲影视资源网| 色综合久久综合中文综合网| 国产日产欧产精品推荐色 | 青椒成人免费视频| 欧美三级电影在线观看| 一区二区三区精品视频在线| 成人免费av资源| 国产精品欧美综合在线| 丁香亚洲综合激情啪啪综合| 久久丝袜美腿综合| 国产一区二区成人久久免费影院 | 精品影视av免费| 精品久久久久香蕉网| 久久成人精品无人区| 精品免费视频.| 韩国精品在线观看| 国产午夜精品福利| 高潮精品一区videoshd| 日本一区二区三区久久久久久久久不| 国产一区亚洲一区|