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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? iphelper.pas

?? < Delphi網絡通信協議分析與應用實現>>一書的源代碼。
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
      List.Add( 'Cumulative Connections   :' + IntToStr( dwNumConns ) );
    end
  else
    List.Add( SyserrorMessage( ErrorCode ) );

end;

//------------------------------------------------------------------------------
procedure Get_UDPTable( List: TStrings );
var
  UDPRow        : TMIBUDPRow;
  i,
    NumEntries  : integer;
  TableSize     : DWORD;
  ErrorCode     : DWORD;
  pBuf          : PChar;
begin
  if not Assigned( List ) then EXIT;
  List.Clear;

  // first call : get size of table
  TableSize := 0;
  ErrorCode := GetUDPTable( PTMIBUDPTable( pBuf ), @TableSize, true );
  if Errorcode <> ERROR_INSUFFICIENT_BUFFER then
    EXIT;

  // get required size of memory, call again
  GetMem( pBuf, TableSize );

  // get table
  ErrorCode := GetUDPTable( PTMIBUDPTable( pBuf ), @TableSize, true );
  if ErrorCode = NO_ERROR then
  begin
    NumEntries := PTMIBUDPTable( pBuf )^.dwNumEntries;
    if NumEntries > 0 then
    begin
      inc( pBuf, SizeOf( DWORD ) ); // get past table size
      for i := 1 to NumEntries do
      begin
        UDPRow := PTMIBUDPRow( pBuf )^; // get next record
        with UDPRow do
          List.Add( Format( '%15s : %-6s',
            [IpAddr2Str( dwLocalAddr ),
            Port2Svc( Port2Wrd( dwLocalPort ) )
              ] ) );
        inc( pBuf, SizeOf( TMIBUDPRow ) );
      end;
    end
    else
      List.Add( 'no entries.' );
  end
  else
    List.Add( SyserrorMessage( ErrorCode ) );
  dec( pBuf, SizeOf( DWORD ) + NumEntries * SizeOf( TMibUDPRow ) );
  FreeMem( pBuf );
end;

//------------------------------------------------------------------------------
procedure Get_IPAddrTable( List: TStrings );
var
  IPAddrRow     : TMibIPAddrRow;
  TableSize     : DWORD;
  ErrorCode     : DWORD;
  i             : integer;
  pBuf          : PChar;
  NumEntries    : DWORD;
begin
  if not Assigned( List ) then EXIT;
  List.Clear;
  TableSize := 0; ;
  // first call: get table length
  ErrorCode := GetIpAddrTable( PTMibIPAddrTable( pBuf ), @TableSize, true );
  if Errorcode <> ERROR_INSUFFICIENT_BUFFER then
    EXIT;

  GetMem( pBuf, TableSize );
  // get table
  ErrorCode := GetIpAddrTable( PTMibIPAddrTable( pBuf ), @TableSize, true );
  if ErrorCode = NO_ERROR then
  begin
    NumEntries := PTMibIPAddrTable( pBuf )^.dwNumEntries;
    if NumEntries > 0 then
    begin
      inc( pBuf, SizeOf( DWORD ) );
      for i := 1 to NumEntries do
      begin
        IPAddrRow := PTMIBIPAddrRow( pBuf )^;
        with IPAddrRow do
          List.Add( Format( '%8.8x|%15s|%15s|%15s|%8.8d',
            [dwIndex,
            IPAddr2Str( dwAddr ),
              IPAddr2Str( dwMask ),
              IPAddr2Str( dwBCastAddr ),
              dwReasmSize
              ] ) );
        inc( pBuf, SizeOf( TMIBIPAddrRow ) );
      end;
    end
    else
      List.Add( 'no entries.' );
  end
  else
    List.Add( SysErrorMessage( ErrorCode ) );

  // we must restore pointer!
  dec( pBuf, SizeOf( DWORD ) + NumEntries * SizeOf( IPAddrRow ) );
  FreeMem( pBuf );
end;


//-----------------------------------------------------------------------------
{ gets entries in routing table; equivalent to "Route Print" }
procedure Get_IPForwardTable( List: TStrings );
var
  IPForwRow     : TMibIPForwardRow;
  TableSize     : DWORD;
  ErrorCode     : DWORD;
  i             : integer;
  pBuf          : PChar;
  NumEntries    : DWORD;
begin
  if not Assigned( List ) then EXIT;
  List.Clear;
  TableSize := 0;

  // first call: get table length
  ErrorCode := GetIpForwardTable( PTMibIPForwardTable( pBuf ), @TableSize, true
    );
  if Errorcode <> ERROR_INSUFFICIENT_BUFFER then
    EXIT;

  // get table
  GetMem( pBuf, TableSize );
  ErrorCode := GetIpForwardTable( PTMibIPForwardTable( pBuf ), @TableSize, true
    );
  if ErrorCode = NO_ERROR then
  begin
    NumEntries := PTMibIPForwardTable( pBuf )^.dwNumEntries;
    if NumEntries > 0 then
    begin
      inc( pBuf, SizeOf( DWORD ) );
      for i := 1 to NumEntries do
      begin
        IPForwRow := PTMibIPForwardRow( pBuf )^;
        with IPForwRow do
          List.Add( Format(
            '%15s|%15s|%15s|%8.8x|%7s|   %5.5d|    %7s|        %2.2d',
            [IPAddr2Str( dwForwardDest ),
            IPAddr2Str( dwForwardMask ),
              IPAddr2Str( dwForwardNextHop ),
              dwForwardIFIndex,
              IPForwTypes[dwForwardType],
              dwForwardNextHopAS,
              IPForwProtos[dwForwardProto],
              dwForwardMetric1
              ] ) );
        inc( pBuf, SizeOf( TMibIPForwardRow ) );
      end;
    end
    else
      List.Add( 'no entries.' );
  end
  else
    List.Add( SysErrorMessage( ErrorCode ) );
  dec( pBuf, SizeOf( DWORD ) + NumEntries * SizeOf( TMibIPForwardRow ) );
  FreeMem( pBuf );
end;

//------------------------------------------------------------------------------
procedure Get_IPStatistics( List: TStrings );
var
  IPStats       : TMibIPStats;
  ErrorCode     : integer;
begin
  if not Assigned( List ) then EXIT;
  ErrorCode := GetIPStatistics( @IPStats );
  if ErrorCode = NO_ERROR then
  begin
    List.Clear;
    with IPStats do
    begin
      if dwForwarding = 1 then
        List.add( 'Forwarding Enabled      : ' + 'Yes' )
      else
        List.add( 'Forwarding Enabled      : ' + 'No' );
      List.add( 'Default TTL             : ' + inttostr( dwDefaultTTL ) );
      List.add( 'Datagrams Received      : ' + inttostr( dwInReceives ) );
      List.add( 'Header Errors     (In)  : ' + inttostr( dwInHdrErrors ) );
      List.add( 'Address Errors    (In)  : ' + inttostr( dwInAddrErrors ) );
      List.add( 'Unknown Protocols (In)  : ' + inttostr( dwInUnknownProtos ) );
      List.add( 'Datagrams Discarded     : ' + inttostr( dwInDiscards ) );
      List.add( 'Datagrams Delivered     : ' + inttostr( dwInDelivers ) );
      List.add( 'Requests Out            : ' + inttostr( dwOutRequests ) );
      List.add( 'Routings Discarded      : ' + inttostr( dwRoutingDiscards ) );
      List.add( 'No Routes          (Out): ' + inttostr( dwOutNoRoutes ) );
      List.add( 'Reassemble TimeOuts     : ' + inttostr( dwReasmTimeOut ) );
      List.add( 'Reassemble Requests     : ' + inttostr( dwReasmReqds ) );
      List.add( 'Succesfull Reassemblies : ' + inttostr( dwReasmOKs ) );
      List.add( 'Failed Reassemblies     : ' + inttostr( dwReasmFails ) );
      List.add( 'Succesful Fragmentations: ' + inttostr( dwFragOKs ) );
      List.add( 'Failed Fragmentations   : ' + inttostr( dwFragFails ) );
      List.add( 'Datagrams Fragmented    : ' + inttostr( dwFRagCreates ) );
      List.add( 'Number of Interfaces    : ' + inttostr( dwNumIf ) );
      List.add( 'Number of IP-addresses  : ' + inttostr( dwNumAddr ) );
      List.add( 'Routes in RoutingTable  : ' + inttostr( dwNumRoutes ) );
    end;
  end
  else
    List.Add( SysErrorMessage( ErrorCode ) );
end;

//------------------------------------------------------------------------------
procedure Get_UdpStatistics( List: TStrings );
var
  UdpStats      : TMibUDPStats;
  ErrorCode     : integer;
begin
  if not Assigned( List ) then EXIT;
  ErrorCode := GetUDPStatistics( @UdpStats );
  if ErrorCode = NO_ERROR then
  begin
    List.Clear;
    with UDPStats do
    begin
      List.add( 'Datagrams (In)    : ' + inttostr( dwInDatagrams ) );
      List.add( 'Datagrams (Out)   : ' + inttostr( dwOutDatagrams ) );
      List.add( 'No Ports          : ' + inttostr( dwNoPorts ) );
      List.add( 'Errors    (In)    : ' + inttostr( dwInErrors ) );
      List.add( 'UDP Listen Ports  : ' + inttostr( dwNumAddrs ) );
    end;
  end
  else
    List.Add( SysErrorMessage( ErrorCode ) );
end;

//------------------------------------------------------------------------------
procedure Get_ICMPStats( ICMPIn, ICMPOut: TStrings );
var
  ErrorCode     : DWORD;
  ICMPStats     : PTMibICMPInfo;
begin
  if ( ICMPIn = nil ) or ( ICMPOut = nil ) then EXIT;
  ICMPIn.Clear;
  ICMPOut.Clear;
  New( ICMPStats );
  ErrorCode := GetICMPStatistics( ICMPStats );
  if ErrorCode = NO_ERROR then
  begin
    with ICMPStats.InStats do
    begin
      ICMPIn.Add( 'Messages received    : ' + IntToStr( dwMsgs ) );
      ICMPIn.Add( 'Errors               : ' + IntToStr( dwErrors ) );
      ICMPIn.Add( 'Dest. Unreachable    : ' + IntToStr( dwDestUnreachs ) );
      ICMPIn.Add( 'Time Exceeded        : ' + IntToStr( dwTimeEcxcds ) );
      ICMPIn.Add( 'Param. Problems      : ' + IntToStr( dwParmProbs ) );
      ICMPIn.Add( 'Source Quench        : ' + IntToStr( dwSrcQuenchs ) );
      ICMPIn.Add( 'Redirects            : ' + IntToStr( dwRedirects ) );
      ICMPIn.Add( 'Echo Requests        : ' + IntToStr( dwEchos ) );
      ICMPIn.Add( 'Echo Replies         : ' + IntToStr( dwEchoReps ) );
      ICMPIn.Add( 'Timestamp Requests   : ' + IntToStr( dwTimeStamps ) );
      ICMPIn.Add( 'Timestamp Replies    : ' + IntToStr( dwTimeStampReps ) );

      ICMPIn.Add( 'Addr. Masks Requests : ' + IntToStr( dwAddrMasks ) );
      ICMPIn.Add( 'Addr. Mask Replies   : ' + IntToStr( dwAddrReps ) );
    end;
     //
    with ICMPStats^.OutStats do
    begin
      ICMPOut.Add( 'Messages sent        : ' + IntToStr( dwMsgs ) );
      ICMPOut.Add( 'Errors               : ' + IntToStr( dwErrors ) );
      ICMPOut.Add( 'Dest. Unreachable    : ' + IntToStr( dwDestUnreachs ) );
      ICMPOut.Add( 'Time Exceeded        : ' + IntToStr( dwTimeEcxcds ) );
      ICMPOut.Add( 'Param. Problems      : ' + IntToStr( dwParmProbs ) );
      ICMPOut.Add( 'Source Quench        : ' + IntToStr( dwSrcQuenchs ) );
      ICMPOut.Add( 'Redirects            : ' + IntToStr( dwRedirects ) );
      ICMPOut.Add( 'Echo Requests        : ' + IntToStr( dwEchos ) );
      ICMPOut.Add( 'Echo Replies         : ' + IntToStr( dwEchoReps ) );
      ICMPOut.Add( 'Timestamp Requests   : ' + IntToStr( dwTimeStamps ) );
      ICMPOut.Add( 'Timestamp Replies    : ' + IntToStr( dwTimeStampReps ) );
      ICMPOut.Add( 'Addr. Masks Requests : ' + IntToStr( dwAddrMasks ) );
      ICMPOut.Add( 'Addr. Mask Replies   : ' + IntToStr( dwAddrReps ) );
    end;
  end
  else
    IcmpIn.Add( SysErrorMessage( ErrorCode ) );
  Dispose( ICMPStats );
end;

//------------------------------------------------------------------------------
procedure Get_RecentDestIPs( List: TStrings );
begin
  if Assigned( List ) then
    List.Assign( RecentIPs )
end;

initialization

  RecentIPs := TStringList.Create;

finalization

  RecentIPs.Free;

end.

{ List of Fixes & Additions

v1.1
-----
Fix :  wrong errorcode reported in GetNetworkParams()
Fix :  RTTI MaxHops 20 > 128
Add :  ICMP -statistics
Add :  Well-Known port numbers
Add :  RecentIP list
Add :  Timer update

v1.2
----
Fix :  Recent IP's correct update
ADD :  ICMP-error codes translated

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天色综合成人网| 国产精品视频在线看| 午夜国产精品影院在线观看| 一本色道久久综合亚洲精品按摩 | 国产精华液一区二区三区| 日韩一级大片在线| 国产精品1区二区.| 中文字幕亚洲精品在线观看| 91视频在线看| 偷拍亚洲欧洲综合| 欧美日韩一区二区三区免费看| 国产不卡一区视频| 综合色天天鬼久久鬼色| 欧美日韩一区二区三区免费看| 久久精品久久精品| 日本一区二区成人| 欧美日韩久久一区| 国产在线视频精品一区| 国产精品久久久久9999吃药| 91激情五月电影| 久久精品国产精品亚洲精品| 日本一区二区三区在线不卡| 欧洲一区二区三区在线| 久久疯狂做爰流白浆xx| 亚洲人快播电影网| 日韩午夜激情免费电影| 91丝袜美女网| 美女在线视频一区| 亚洲人成网站色在线观看| 日韩亚洲欧美成人一区| 97久久精品人人做人人爽50路| 亚瑟在线精品视频| 国产精品久久久久久久久搜平片| 欧美午夜在线一二页| 国产一区二区在线影院| 亚洲精品国产精华液| 精品粉嫩aⅴ一区二区三区四区| 91丨九色丨蝌蚪丨老版| 狠狠色综合播放一区二区| 亚洲综合男人的天堂| 国产欧美日韩视频一区二区| 欧美日韩黄视频| 成人av第一页| 激情综合色丁香一区二区| 日韩毛片在线免费观看| 2021国产精品久久精品| 欧美最新大片在线看| 成人a免费在线看| 蜜桃av一区二区| 亚洲一本大道在线| 亚洲天堂精品在线观看| 久久久久久久综合日本| 欧美精品一二三区| 一本色道亚洲精品aⅴ| 高清国产午夜精品久久久久久| 美女一区二区三区| 亚洲成人动漫在线免费观看| 1024精品合集| 日本一区二区不卡视频| 国产日韩精品一区二区三区在线| 日韩一区二区在线看片| 欧美日韩成人一区二区| 91久久精品一区二区三区| 国产成人av电影在线播放| 美女在线观看视频一区二区| 天堂久久一区二区三区| 亚洲女同ⅹxx女同tv| 中文无字幕一区二区三区 | 美女视频黄免费的久久| 亚洲一区二区黄色| 国产精品乱子久久久久| 久久久久久久久久电影| 精品国产一区二区三区四区四| 欧美日韩一区二区三区四区 | 国产在线精品一区二区三区不卡 | 最新高清无码专区| 国产精品久久久久久久蜜臀 | 亚洲已满18点击进入久久| 国产精品免费丝袜| 成人免费小视频| 亚洲免费av高清| 亚洲综合一区二区三区| 亚洲v中文字幕| 日韩精品亚洲一区| 久久精品999| 经典三级一区二区| 国产一区福利在线| av不卡免费在线观看| 91女神在线视频| 欧美色倩网站大全免费| 欧美一级夜夜爽| 2017欧美狠狠色| 国产精品久久久久桃色tv| 亚洲激情第一区| 天天操天天色综合| 久久66热偷产精品| 丰满亚洲少妇av| 91丨porny丨蝌蚪视频| 欧美在线播放高清精品| 日韩欧美二区三区| 国产精品私人影院| 亚洲一区自拍偷拍| 麻豆精品一区二区| 成人福利电影精品一区二区在线观看| 99综合电影在线视频| 欧美日韩小视频| 精品99久久久久久| 亚洲日本成人在线观看| 偷窥少妇高潮呻吟av久久免费| 国产一区二区伦理| 色婷婷综合视频在线观看| 日韩三级电影网址| 自拍偷拍欧美精品| 久久99精品一区二区三区| caoporn国产一区二区| 欧美电影一区二区| 国产精品乱码久久久久久| 亚洲成av人片| 成人高清伦理免费影院在线观看| 欧美午夜在线观看| 国产日韩精品一区二区三区| 午夜精品视频一区| 国产福利一区在线观看| 欧美日韩二区三区| 国产精品久久久爽爽爽麻豆色哟哟| 日日夜夜精品视频天天综合网| 国产乱码精品一区二区三区忘忧草| 一本久久精品一区二区| 亚洲精品一区二区在线观看| 亚洲激情在线激情| 国产suv精品一区二区6| 欧美日韩卡一卡二| 亚洲天堂成人网| 九九**精品视频免费播放| 欧美综合在线视频| 国产精品无码永久免费888| 日韩国产欧美在线播放| 91色porny| 亚洲欧美怡红院| 国产精品自在在线| 日韩精品一区二区三区中文不卡| 成人免费在线观看入口| 极品少妇xxxx精品少妇偷拍| 欧美精品乱码久久久久久| 日韩伦理免费电影| 成人av先锋影音| 久久麻豆一区二区| 精品无人码麻豆乱码1区2区| 欧美日韩色一区| 一区二区三区视频在线看| 成人aa视频在线观看| 精品国产乱码久久久久久久久| 天堂在线亚洲视频| 欧美唯美清纯偷拍| 亚洲永久免费av| 色婷婷久久99综合精品jk白丝| 国产欧美日韩卡一| 国产盗摄视频一区二区三区| www久久精品| 精品中文字幕一区二区| 欧美大片拔萝卜| 免费国产亚洲视频| 日韩三级高清在线| 久久99久久精品| 精品成人在线观看| 国产一区二区三区免费播放| 久久综合999| 懂色av中文字幕一区二区三区 | 一区二区三区四区在线| 色哟哟精品一区| 亚洲一区在线视频| 欧美日韩一二区| 日韩av一区二| 精品第一国产综合精品aⅴ| 韩国理伦片一区二区三区在线播放| 精品国产乱码久久久久久闺蜜| 国产老女人精品毛片久久| 欧美激情综合五月色丁香小说| 成人性生交大片免费| 尤物视频一区二区| 欧美蜜桃一区二区三区| 蓝色福利精品导航| 久久久美女毛片| 99久久夜色精品国产网站| 亚洲美女一区二区三区| 欧美日韩一区二区电影| 另类成人小视频在线| 国产欧美日韩激情| 91影院在线观看| 日韩黄色在线观看| 欧美精品一区视频| 91啪亚洲精品| 蜜桃免费网站一区二区三区| 久久视频一区二区| 99久久久久久99| 免费观看日韩av| 中文文精品字幕一区二区| 欧美三级电影在线观看| 久久精品久久99精品久久| 中文字幕精品一区二区精品绿巨人 |