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

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

?? iphelper.pas

?? < Delphi網絡通信協議分析與應用實現>>一書的源代碼。
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
          sDescr := trim( sDescr );
          NameList.Add( sDescr );
          ItemList.Add( Format( '%0.8x|%2d| %16s| %4d| %8d| %8d| %8d',
            [dwIndex, dwType,
            MacAddr2Str( TMacAddress( bPhysAddr ), dwPhysAddrLen )
              , dwMTU, dwSpeed,
              dwInOctets, dwOutOctets,
              dwOPerStatus] )
              );
        end;
        inc( pBuf, SizeOf( IfRow ) );
      end;
    end
    else  begin
      NameList.Add( 'no entries');
      ItemList.Add( 'no data' );
    end;
  end
  else begin
    NameList.Add( 'Oops');
    ItemList.Add( SysErrorMessage( GetLastError ) );
  end;
  dec( pBuf, SizeOf( DWORD ) + NumEntries * SizeOf( IfRow ) );
  FreeMem( pBuf );
end;


//------------------------------------------------------------------------------
procedure Get_IfTableMIB( var MIBIfArray: TMIBIfArray );
var
    i,Error,TableSize: integer;
    pBuf          : PChar;
    NumEntries    : DWORD;
    sDescr,Temp   : string;
begin
    TableSize := 0;
    //首先取得所需要的內存大小
    Error := GetIfTable( PTMibIfTable( pBuf ), @TableSize, false );
    if Error <> ERROR_INSUFFICIENT_BUFFER then
        EXIT;
    GetMem( pBuf, TableSize );

    //取得MIB信息表的指針
    Error := GetIfTable( PTMibIfTable( pBuf ), @TableSize, false );
    if Error = NO_ERROR then
    begin
        NumEntries := PTMibIfTable( pBuf )^.dwNumEntries;
        if NumEntries > 0 then
        begin
            SetLength( MIBIfArray, NumEntries );
            inc( pBuf, SizeOf( NumEntries ) );
            for i := 0 to pred(NumEntries) do
            begin
                MIBIfArray[i] := PTMibIfRow( pBuf )^;
                inc( pBuf, SizeOf( TMIBIfRow ) );
            end;
        end;
    end;
    dec( pBuf, SizeOf( DWORD ) + NumEntries * SizeOf( TMIBIfRow ) );
    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 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;
  // 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
          if dwState in [2,5] then   // only listening, established
          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 ) );
      List.Add( 'Cumulative Connections   :' + IntToStr( dwNumConns ) );
    end
  else
    List.Add( SyserrorMessage( ErrorCode ) );

end;

//------------------------------------------------------------------------------
procedure Get_UDPTable( List: TStrings );
var
  UDPRow        : TMIBUDPRow;
  i,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产iv一区二区三区| 国产精品你懂的| 26uuu亚洲| 依依成人精品视频| 国产一区高清在线| 欧美日韩在线三区| 中文字幕亚洲一区二区av在线 | 国产精品色在线| 日韩国产欧美一区二区三区| 高清不卡一二三区| 日韩欧美一区二区在线视频| 亚洲第一福利视频在线| 成人深夜在线观看| 国产亚洲欧美色| 精品一区二区日韩| 884aa四虎影成人精品一区| 亚洲欧洲性图库| 粉嫩aⅴ一区二区三区四区| 欧美草草影院在线视频| 首页国产欧美久久| 欧美日韩色综合| 亚洲综合久久av| 在线免费观看日本欧美| 国产精品情趣视频| 成人国产精品免费观看| 国产亚洲欧美在线| 国产成人免费xxxxxxxx| 精品盗摄一区二区三区| 久久精品国产一区二区三区免费看| 在线观看免费一区| 亚洲精品日日夜夜| 欧洲色大大久久| 夜夜嗨av一区二区三区中文字幕| 一本大道av伊人久久综合| 中文字幕日韩av资源站| 91偷拍与自偷拍精品| 中文字幕一区二区三区在线观看 | 欧美日韩中文精品| 亚洲电影你懂得| 欧美日韩国产大片| 视频一区二区三区中文字幕| 欧美日韩国产经典色站一区二区三区| 亚洲va韩国va欧美va| 欧美丰满少妇xxxxx高潮对白| 青青草97国产精品免费观看无弹窗版| 欧美视频一区二区三区四区 | 成人欧美一区二区三区白人 | 成人一区二区三区在线观看| 欧美激情资源网| 91福利在线免费观看| 午夜欧美在线一二页| 91麻豆精品国产91久久久资源速度| 日本在线不卡一区| 久久久亚洲综合| 99久免费精品视频在线观看| 一区二区国产视频| 欧美日本乱大交xxxxx| 国产一区二区三区在线观看免费 | 99re在线视频这里只有精品| 亚洲自拍偷拍欧美| 精品国产亚洲在线| 99精品视频免费在线观看| 午夜天堂影视香蕉久久| 久久久无码精品亚洲日韩按摩| 成人性生交大片免费看在线播放| 亚洲人精品午夜| 欧美成人bangbros| 日本福利一区二区| 国内久久精品视频| 亚洲免费观看在线视频| 欧美成人一区二区| 色av成人天堂桃色av| 麻豆成人久久精品二区三区红| 欧美高清在线精品一区| 8x福利精品第一导航| youjizz久久| 另类的小说在线视频另类成人小视频在线 | 日本一区二区三区在线观看| 在线观看日产精品| 成人午夜免费电影| 免费视频最近日韩| 亚洲一级二级在线| 欧美激情艳妇裸体舞| 91精品国产福利在线观看| www.亚洲激情.com| 韩国v欧美v日本v亚洲v| 亚洲成人动漫一区| 亚洲视频网在线直播| 精品国产一区二区三区忘忧草| 色综合欧美在线视频区| 高清成人免费视频| 久久精品国产99久久6| 亚洲精品福利视频网站| 国产精品美女久久久久久久久久久| 欧美一区二区三区小说| 欧美亚洲日本一区| 97久久精品人人做人人爽| 激情综合色综合久久综合| 天天操天天色综合| 亚洲精品自拍动漫在线| 国产精品入口麻豆原神| 久久久久久久性| 精品国产乱码久久久久久蜜臀| 欧美日韩你懂的| 欧美色图片你懂的| 91福利视频久久久久| 色综合天天综合在线视频| 99re这里只有精品视频首页| 国产麻豆视频精品| 韩国欧美国产1区| 久久99久国产精品黄毛片色诱| 日韩成人免费在线| 性做久久久久久| 亚洲成人一区在线| 手机精品视频在线观看| 日韩国产成人精品| 日韩黄色片在线观看| 日韩精品一级二级 | 亚洲综合网站在线观看| 亚洲老司机在线| 一区二区在线观看免费视频播放| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国产精品三级电影| 国产精品国产三级国产专播品爱网| 亚洲国产精品二十页| 国产精品久久久久影院| 亚洲同性gay激情无套| 亚洲激情中文1区| 午夜视频久久久久久| 麻豆成人在线观看| 成人性视频免费网站| 91丨porny丨蝌蚪视频| 日本道色综合久久| 日韩一区二区电影在线| 久久久噜噜噜久久中文字幕色伊伊| 日本一区二区三区久久久久久久久不 | 一区二区高清在线| 日韩精品成人一区二区三区| 久久电影网站中文字幕| 91久久精品一区二区二区| 欧美在线一区二区三区| 日韩欧美国产一区二区在线播放 | 国产福利精品一区| 色哟哟一区二区三区| 欧美日韩国产bt| 久久奇米777| 亚洲精品国产无天堂网2021 | 成人高清av在线| 91成人在线观看喷潮| 日韩视频在线你懂得| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 欧美一区二区三区不卡| 国产精品伦理一区二区| 肉肉av福利一精品导航| 国产大陆亚洲精品国产| 在线观看视频一区二区 | 91精品国产色综合久久久蜜香臀| 久久亚洲精品国产精品紫薇| 亚洲欧美另类小说| 黄色小说综合网站| 欧亚一区二区三区| 国产丝袜欧美中文另类| 日韩影院精彩在线| 99国产麻豆精品| 欧美tk丨vk视频| 亚洲电影在线播放| 91亚洲精品久久久蜜桃| 日韩一级二级三级精品视频| 亚洲人成在线观看一区二区| 韩国一区二区在线观看| 欧美日韩在线三区| 亚洲色图欧洲色图| 国产精品91xxx| 日韩一本二本av| 亚洲va欧美va人人爽午夜| 99麻豆久久久国产精品免费| 久久综合资源网| 蜜桃免费网站一区二区三区| 欧美在线免费视屏| 亚洲青青青在线视频| 国产成人av电影| 精品国产一区二区三区av性色 | 日韩三级伦理片妻子的秘密按摩| 亚洲视频在线一区观看| 国产成人精品三级麻豆| 精品粉嫩超白一线天av| 日韩国产在线观看一区| 91精品办公室少妇高潮对白| 中文在线资源观看网站视频免费不卡 | 337p日本欧洲亚洲大胆精品| 爽好久久久欧美精品| 在线免费观看成人短视频| **网站欧美大片在线观看| 国产成人综合亚洲91猫咪| 亚洲精品一区二区三区在线观看| 丝袜美腿成人在线| 91精品国产91久久久久久一区二区 | 一个色妞综合视频在线观看| 91老师国产黑色丝袜在线| 成人免费视频在线观看|