::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2004-08-12 19:03:33, Hit : 4835, Vote : 1297
 http://www.howto.pe.kr
 설치된 Network Protocol 목록 구하기 (Winsock2)

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj, WinSock2;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function ByteOrderToString(O: DWORD): string;
begin
  case O of
    BIGENDIAN: Result := 'Big Endian';
    LITTLEENDIAN: Result := 'Little Endian';
  else
    Result := 'Unknown';
  end;
end;

function SocketTypeToString(T: DWORD): string;
begin
  case T of
    SOCK_STREAM: Result := 'Stream';
    SOCK_DGRAM: Result := 'Datagram';
  else
    Result := 'Unknown';
  end;
end;

function AddressFamilyToString(F: DWORD): string;
begin
  case F of
    AF_UNIX: Result := 'local to host (pipes, portals';
    AF_INET: Result := 'internetwork: UDP, TCP, etc.';
    AF_IMPLINK: Result := 'arpanet imp addresses';
    AF_PUP: Result := 'pup protocols: e.g. BSP';
    AF_CHAOS: Result := 'mit CHAOS protocols';
    AF_NS: Result := 'XEROX NS protocols';
    // AF_IPX: Result := 'IPX protocols: IPX, SPX, etc.';
    AF_ISO: Result := 'ISO protocols';
    // AF_OSI: Result := 'OSI is ISO';
    AF_ECMA: Result := 'european computer manufacturers';
    AF_DATAKIT: Result := 'datakit protocols';
    AF_CCITT: Result := 'CCITT protocols, X.25 etc';
    AF_SNA: Result := 'IBM SNA';
    AF_DECnet: Result := 'DECnet';
    AF_DLI: Result := 'Direct data link interface';
    AF_LAT: Result := 'LAT';
    AF_HYLINK: Result := 'NSC Hyperchannel';
    AF_APPLETALK: Result := 'AppleTalk';
    AF_NETBIOS: Result := 'NetBios-style addresses';
    AF_VOICEVIEW: Result := 'VoiceView';
    AF_FIREFOX: Result := 'Protocols from Firefox';
    AF_UNKNOWN1: Result := 'Somebody is using this!';
    AF_BAN: Result := 'Banyan';
    AF_ATM: Result := 'Native ATM Services';
    AF_INET6: Result := 'Internetwork Version 6';
    AF_CLUSTER: Result := 'Microsoft Wolfpack';
    AF_12844: Result := 'IEEE 1284.4 WG AF';
    AF_IRDA: Result := 'IrDA';
    AF_NETDES: Result := 'Network Designers OSI & gateway enabled protocols';
  else
    Result := 'Unknown';
  end;
end;

procedure DisplayProtocolInfo(memo: TStrings; const Info: PWSAProtocol_InfoA);
var
  I: Integer;
begin
  memo.add(Info^.szProtocol);
  memo.add('Protocol Version:     ' + IntToStr(Info^.iVersion));
  memo.add('Address Family:       ' + AddressFamilyToString(Info^.iAddressFamily));
  //memo.add('Provider:             ' + GUIDToString(Info^.ProviderId));
  memo.add('Service Flags1:       ' + IntToHex(Info^.dwServiceFlags1, 8)); // TODO ToString
  memo.add('Service Flags2:       ' + IntToHex(Info^.dwServiceFlags2, 8));
  memo.add('Service Flags3:       ' + IntToHex(Info^.dwServiceFlags3, 8));
  memo.add('Service Flags4:       ' + IntToHex(Info^.dwServiceFlags4, 8));
  memo.add('Provider Flags:       ' + IntToHex(Info^.dwProviderFlags, 8));
  if Info^.dwProviderFlags and PFL_MULTIPLE_PROTO_ENTRIES <> 0 then
    memo.add('  PFL_MULTIPLE_PROTO_ENTRIES');
  if Info^.dwProviderFlags and PFL_RECOMMENDED_PROTO_ENTRY <> 0 then
    memo.add('  PFL_RECOMMENDED_PROTO_ENTRY');
  if Info^.dwProviderFlags and PFL_HIDDEN <> 0 then memo.add('  PFL_HIDDEN');
  if Info^.dwProviderFlags and PFL_MATCHES_PROTOCOL_ZERO <> 0 then memo.add('PFL_MATCHES_PROTOCOL_ZERO');
  memo.add('Catalog Entry:        ' + IntToStr(Info^.dwCatalogEntryId));
  memo.add('Maximum Message Size: ' + IntToHex(Info^.dwMessageSize, 8));
  memo.add('Security Scheme:      ' + IntToStr(Info^.iSecurityScheme));
  memo.add('Byte Order:           ' + ByteOrderToString(Info^.iNetworkByteOrder));
  memo.add('Protocol:             ' + IntToStr(Info^.iProtocol));
  memo.add('Protocol MaxOffset:   ' + IntToStr(Info^.iProtocolMaxOffset));
  memo.add('Min Socket Address:   ' + IntToStr(Info^.iMinSockAddr));
  memo.add('Max Socket Address:   ' + IntToStr(Info^.iMaxSockAddr));
  memo.add('Socket Type:          ' + SocketTypeToString(Info^.iSocketType));
  memo.add('Protocol Chain:');
  for I := 0 to Info^.ProtocolChain.ChainLen - 1 do
    memo.add(#9+IntToStr(Info^.ProtocolChain.ChainEntries[I]) + ' ');
  memo.add('');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  WSAData: TWSAData;
  BufferLength: DWORD;
  Buffer, Info: PWSAProtocol_InfoA;
  I, Count: Integer;
begin
    if WSAStartUp($0202, WSAData) = 0 then
  try
    Assert(WSAData.wHighVersion >= 2);
    BufferLength := 0;
    if (WSAEnumProtocols(nil, nil, BufferLength) = SOCKET_ERROR) and (WSAGetLastError = WSAENOBUFS) then
    begin
      Buffer := AllocMem(BufferLength);
      try
        Count := WSAEnumProtocols(nil, Buffer, BufferLength);
        if Count <> SOCKET_ERROR then
        begin
          Info := Buffer;
          for I := 0 to Count - 1 do
          begin
            Assert(not IsBadReadPtr(Info, SizeOf(TWSAProtocol_InfoA)));
            DisplayProtocolInfo(Memo1.Lines, Info);
            Memo1.Lines.add('');
            Inc(Info);
          end;
        end
        else
          Memo1.Lines.add('Failed to retrieve protocol information.');
      finally
        FreeMem(Buffer);
      end;
    end
    else
    begin
      Memo1.Lines.add('Unable to enumerate protocols.');
      Memo1.Lines.add('Error code: ' + IntToStr(WSAGetLastError));
      Memo1.Lines.add('Error message: ' + SysErrorMessage(WSAGetLastError));
    end;
  finally
    WSACleanUp;
  end
  else Memo1.Lines.add('Windows Sockets ver 2 initialization failed.');
  
end;

end.





851   [네트웍/인터넷] IP Helper API 를 이용한 "route PRINT" 명령어  김영대 2004/08/13 6135 1542
850   [네트웍/인터넷] IP Helper API 를 이용한 "ipconfig /all" 구현  김영대 2004/08/13 6102 1525
849   [네트웍/인터넷] IP Helper API 를 이용한 ARP 예제 (MAC->IP 구하기)  김영대 2004/08/12 5382 1257
  [네트웍/인터넷] 설치된 Network Protocol 목록 구하기 (Winsock2)  김영대 2004/08/12 4835 1297
847   [네트웍/인터넷] Network Packet Capture (Winsock2)  김영대 2004/08/12 5807 1242
846   [네트웍/인터넷] IP Helper API 를 이용한 NIC 통신 상태 구하기  김영대 2004/08/12 5145 1441
845   [네트웍/인터넷] IP Helper API 를 이용한 IP 주소 테이블 구하기  김영대 2004/08/12 5486 1213
844   [네트웍/인터넷] IP Helper API 를 이용한 접속 상태 테이블 구하기  김영대 2004/08/12 5419 1390
843   [일반/컴포넌트] Task bar 에 나타나는 프로그램 아이콘 바꾸기  김영대 2004/08/11 4883 1156
842   [시스템] 디스플레이 어댑터 목록 구하기  김영대 2004/08/11 4429 1175
841   [윈도우즈 API] IE 임시 인터넷 파일 폴더 비우기2  김영대 2004/08/11 4786 1227
840   [시스템] Sleep 중에도 타이머 이벤트 발생시키기  김영대 2004/08/09 5740 1330
839   [일반/컴포넌트] 도넛(Doughnut) 모양의 폼 만들기  김영대 2004/08/09 4325 1075
838   [네트웍/인터넷] Ping 소스  김영대 2004/08/09 6740 1212
837   [일반/컴포넌트] 수식(Expression) 계산기  김영대 2004/08/09 4454 1094
836   [COM/OLE] Shockwave Flash ActiveX 사용하기 예제  김영대 2004/08/09 4893 1308
835   [일반/컴포넌트] 벽에 들러붙는 자석폼 만들기  김영대 2004/08/06 4585 1140
834   [윈도우즈 API] Type Library 목록 구하기  김영대 2004/08/06 4404 1189
833   [일반/컴포넌트] Title bar 에 문자 올리기  김영대 2004/08/06 4587 1228
832   [일반/컴포넌트] Shockwave Flash 가 설치되었는지 검사하고 버전정보 읽어오기  김영대 2004/08/06 5906 1474
831   [일반/컴포넌트] Adobe Acrobat 이 설치되었는지 검사하기  김영대 2004/08/06 4397 1093
830   [시스템] 프로그램 제거(Uninstall) 목록 구하기  김영대 2004/08/05 4783 1248
829   [일반/컴포넌트] TreeView 의 노드를 볼드(Bold)로 강조하기  김영대 2004/08/05 5769 1670
828   [윈도우즈 API] 휴지통이 비어있는지 확인하기  김영대 2004/08/05 4735 1181
827   [일반/컴포넌트] ListView 내용을 파일로 저장하고 불러오기  김영대 2004/08/05 4453 1063
826   [시스템] 윈도우즈 부팅 모드(정상, 안전)  김영대 2004/08/05 4113 1159
825   [일반/컴포넌트] TPanel 로 만든 힌트  김영대 2004/08/05 4396 1092
824   [윈도우즈 API] 세로 타이틀바 만들기  김영대 2004/08/04 4888 1336
823   [일반/컴포넌트] 동적으로 생성한 TLabel 마우스로 이동시키기  김영대 2004/08/04 6273 1851
822   [일반/컴포넌트] RichEdit 에 URL link 만들기  김영대 2004/08/04 5772 1290
821   [일반/컴포넌트] Hex Viewer  김영대 2004/08/04 4216 1062
820   [시스템] 파일의 소유자와 도메인 구하기  김영대 2004/08/04 4097 1145
819   [시스템] 윈도우즈 사용자 계정 정보 구하기  김영대 2004/08/03 5125 1315
818   [시스템] 윈도우즈 화면 잠그기  김영대 2004/08/03 5059 1285
817   [시스템] DOS 명령어 실행하고 결과 받아오기 (Win2k,XP)  김영대 2004/08/03 5606 1338
816   [시스템] 일정시간 경과 후 윈도우즈 종료하기  김영대 2004/08/03 4501 1101
815   [일반/컴포넌트] Zlib 를 이용한 압축과 해제  김영대 2004/08/03 5251 1202
814   [일반/컴포넌트] Search and Select  김영대 2004/08/03 5153 1348
813   [시스템] DOS (명령 프롬프트) 창의 색상, 화면 모드 바꾸기  김영대 2004/08/02 5432 1592
812   [시스템] 외부 프로그램 종료 시키기  김영대 2004/08/02 5920 1188

[1][2][3] 4 [5][6][7][8][9][10]..[25] [다음 10개]
 

Copyright 1999-2019 Zeroboard / skin by zero