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

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

?? iphelper.pas

?? < Delphi網(wǎng)絡(luò)通信協(xié)議分析與應(yīng)用實(shí)現(xiàn)>>一書(shū)的源代碼。
?? PAS
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
    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;


//------------------------------------------------------------------------------
procedure Get_IPAddrTableMIB( var IPAddrTable:TMibIPAddrArray  );
var
    IPAddrRow     : TMibIPAddrRow;
    TableSize     : DWORD;
    ErrorCode     : DWORD;
    i             : integer;
    pBuf          : PChar;
    NumEntries    : DWORD;
begin
    TableSize := 0; ;
    //首先取得列表的大小
    ErrorCode := GetIpAddrTable( PTMibIPAddrTable( pBuf ), @TableSize, true );
    if Errorcode <> ERROR_INSUFFICIENT_BUFFER then
        EXIT;

    GetMem( pBuf, TableSize );
    //取得列表
    ErrorCode := GetIpAddrTable( PTMibIPAddrTable( pBuf ), @TableSize, true );
    if ErrorCode = NO_ERROR then
    begin
        NumEntries := PTMibIPAddrTable( pBuf )^.dwNumEntries;
        if NumEntries > 0 then
        begin
            SetLength( IPAddrTable, NumEntries);
            inc( pBuf, SizeOf( DWORD ) );
            for i := 1 to NumEntries do
            begin
                IPAddrTable[ i-1 ] := PTMIBIPAddrRow( pBuf )^;
                inc( pBuf, SizeOf( TMIBIPAddrRow ) );
            end;
        end;
    end;
    dec( pBuf, SizeOf( DWORD ) + NumEntries * SizeOf( IPAddrRow ) );
    FreeMem( pBuf );
end;

//-----------------------------------------------------------------------------
{ gets entries in routing table; equivalent of "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

v1.3
----
chg :  left out adapter "admin status" and "oper. status"
add :  adapter bytes in/out

}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线视频欧美区| 成人午夜免费视频| 国产日韩av一区| 欧美在线观看禁18| 风间由美一区二区av101| 人妖欧美一区二区| 亚洲欧美在线视频| 精品处破学生在线二十三| 91猫先生在线| 国产成人精品亚洲午夜麻豆| 日本怡春院一区二区| 亚洲欧美激情插| 国产欧美视频在线观看| 日韩欧美亚洲另类制服综合在线| 一本到一区二区三区| 国产成人综合在线观看| 91麻豆高清视频| 国产九色sp调教91| 美日韩黄色大片| 亚洲电影中文字幕在线观看| 中文字幕一区在线观看| 国产香蕉久久精品综合网| 欧美一区二区三区啪啪| 欧美亚洲综合在线| 99re热视频这里只精品 | 免费在线视频一区| 亚洲伊人色欲综合网| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 久久久久久9999| 久久综合精品国产一区二区三区 | 欧洲视频一区二区| 91蝌蚪porny成人天涯| a亚洲天堂av| 成人激情校园春色| 成人国产电影网| 成人小视频在线| 岛国精品在线播放| 国产成人精品综合在线观看| 国产美女精品在线| 韩国视频一区二区| 国产伦理精品不卡| 日韩一级在线观看| 3d动漫精品啪啪1区2区免费| 欧美美女网站色| 在线电影院国产精品| 91精品国产91久久综合桃花| 91精品国产综合久久婷婷香蕉| 欧美日韩大陆一区二区| 欧美精品日韩一本| 91精品国产麻豆| 欧美videofree性高清杂交| 制服.丝袜.亚洲.中文.综合| 欧美一区二区三区婷婷月色| 日韩美女天天操| 国产午夜精品久久| 国产精品灌醉下药二区| 亚洲黄色小视频| 亚洲成人激情自拍| 麻豆精品在线观看| 国产成人精品综合在线观看| 99久久国产综合精品麻豆| 91国产丝袜在线播放| 欧美日韩国产系列| 精品国产自在久精品国产| 国产精品视频在线看| 一级特黄大欧美久久久| 偷拍一区二区三区| 精彩视频一区二区| www.日韩av| 91.com视频| 国产免费久久精品| 亚洲地区一二三色| 9191久久久久久久久久久| 精品国一区二区三区| 中文字幕一区不卡| 天天av天天翘天天综合网色鬼国产| 美腿丝袜一区二区三区| 99久久99久久综合| 91精品国产综合久久久久久久久久| 日韩三级av在线播放| 国产精品免费人成网站| 午夜精品久久久久久久| 国产精品12区| 欧美日韩国产高清一区二区三区 | 豆国产96在线|亚洲| 在线亚洲人成电影网站色www| 欧美一级高清片在线观看| 中文字幕免费在线观看视频一区| 亚洲一区二区三区四区在线观看| 国模冰冰炮一区二区| 欧美三级资源在线| 中文字幕精品一区二区精品绿巨人| 亚洲高清免费在线| av在线不卡网| 精品久久久三级丝袜| 亚洲一区av在线| 粉嫩蜜臀av国产精品网站| 欧美一级日韩免费不卡| 亚洲男人的天堂在线观看| 精品在线亚洲视频| 欧美日韩一区在线| 亚洲手机成人高清视频| 九色综合国产一区二区三区| 欧美色图在线观看| 国产精品国产精品国产专区不蜜| 久久99国内精品| 欧美二区三区的天堂| 伊人婷婷欧美激情| 不卡电影一区二区三区| 精品国产91九色蝌蚪| 三级欧美在线一区| 日本韩国精品一区二区在线观看| 国产校园另类小说区| 精品综合久久久久久8888| 337p亚洲精品色噜噜狠狠| 一区二区在线观看免费| av男人天堂一区| 国产欧美日韩久久| 国产九色sp调教91| 2024国产精品| 国内精品不卡在线| 精品国产免费一区二区三区四区| 五月天久久比比资源色| 欧美亚洲综合另类| 亚洲一区二区精品久久av| 91精品福利视频| 亚洲精品第1页| 色综合久久久久综合99| 亚洲视频在线一区二区| 99re热视频精品| 国产精品成人免费在线| av中文字幕一区| 综合久久久久久久| 97精品国产露脸对白| 中文字幕在线观看不卡视频| 成人妖精视频yjsp地址| 国产日韩欧美麻豆| 国产不卡视频在线播放| 中文字幕不卡一区| 99国内精品久久| 亚洲男人的天堂在线观看| 日本道色综合久久| 亚洲一区二区偷拍精品| 91超碰这里只有精品国产| 裸体在线国模精品偷拍| 久久久91精品国产一区二区精品 | 欧美一区二区观看视频| 蜜桃久久精品一区二区| 欧美变态tickling挠脚心| 精品亚洲国内自在自线福利| 2020国产精品久久精品美国| 国产精品1024| 亚洲欧美日韩电影| 欧美久久久久免费| 精品一区二区三区欧美| 欧美国产激情一区二区三区蜜月| 99精品视频一区二区| 亚洲电影视频在线| 日韩网站在线看片你懂的| 国产激情精品久久久第一区二区| 国产精品美女视频| 欧美在线免费视屏| 蜜臀av在线播放一区二区三区| 久久精品网站免费观看| 色婷婷综合久久| 蜜乳av一区二区| 中文字幕一区二区三区乱码在线| 欧美性大战久久久久久久| 久草中文综合在线| 亚洲人成精品久久久久| 7777精品伊人久久久大香线蕉 | 中文字幕一区免费在线观看| 欧洲精品一区二区| 久久国产精品99久久久久久老狼| 国产精品视频一二三| 欧美日韩亚洲高清一区二区| 麻豆91精品91久久久的内涵| 中文字幕中文乱码欧美一区二区| 欧美日韩mp4| 成人综合日日夜夜| 日韩精品乱码免费| 国产精品久久久久一区二区三区共| 欧美日韩精品欧美日韩精品| 国产毛片精品视频| 亚洲大片免费看| 国产精品美女www爽爽爽| 欧美精品18+| av中文字幕不卡| 精品中文字幕一区二区| 一区二区三区日韩欧美| 久久欧美一区二区| 欧美人与z0zoxxxx视频| 国产69精品久久久久毛片| 日韩综合小视频| 亚洲欧美一区二区不卡| 久久精品免视看| 日韩一区二区三区电影在线观看| 91浏览器入口在线观看| 国产高清精品久久久久| 免费精品视频在线|