::: µ¨ÆÄÀÌ Tip&Trick :::

µ¨ÆÄÀÌ Tip&Trick ¼º°Ý¿¡ ¸ÂÁö ¾Ê´Â ±¤°í,ºñ¹æ,Áú¹®ÀÇ ±ÛÀº Áï½Ã »èÁ¦Çϸç
³»¿ëÀ» º¹»çÇÏ¿© »ç¿ëÇÒ °æ¿ì ¹Ýµå½Ã À̰÷(http://www.howto.pe.kr)À» Ãâó·Î ¸í½ÃÇÏ¿© ÁÖ¼¼¿ä


Category

  ±è¿µ´ë(2003-03-07 20:54:40, Hit : 6267, Vote : 1569
 Network Adaptor °¡ ¿©·¯°³ÀÎ °æ¿ìÀÇ IP ±¸Çϱâ

// I have need to access the IP address on Win95/WinNT
// where we have TCP/IP on the network card, and also
// on a dial-up connection.
//
// The NM* internet controls have a property 'LocalIP',
// but this returns the address of the NIC, not the dial-up.
//
// How do I get the other IP address, or better still, how
// would I loop through all adaptors ?

// Å×½ºÆ® °á°ú Windows NT ¿¡¼­¸¸ Á¤È®È÷ ÀÛµ¿ÇßÀ½(ws2_32.dll ÀÇ ¹öÀüÀº 4.00 À̾úÀ½)
// Windows 95(ws2_32.dll ÀÇ ¹öÀüÀº 4.10.1656 À̾úÀ½) ´Â Á¤È®È÷ µ¿ÀÛ ¾ÈÇÔ
// longword ÇüÀÌ ¾ø¾î¼­ longint ·Î ´ëüÇÏ¿© ÄÄÆÄÀÏ ÇØº¸¾ÒÀ½

unit NetCardsUnit;

interface

uses Windows, Classes, WinSock;

const
  MAX_PROTOCOL_CHAIN  = 7;
  WSAPROTOCOL_LEN     = 255;
  SIO_GET_INTERFACE_LIST = IOC_OUT or
                           ((longint(sizeOf(longint)) and IOCPARM_MASK) shl 16) or
                           (longint(byte('t')) shl 8) or 127;

type
  PINTERFACE_INFO = ^TINTERFACE_INFO;
  TINTERFACE_INFO = packed record
    iiFlags: longint;
    iiAddress: TSockAddrIn;
    iiBroadcastAddress: TSockAddrIn;
    iiNetmask: TSockAddrIn;
  end;

  TGroup            = integer;
  PGroup            = ^TGroup;
  LPWSAOVERLAPPED   = POverlapped;

  PWSAPROTOCOLCHAIN = ^TWSAPROTOCOLCHAIN;
  TWSAPROTOCOLCHAIN = packed record
    ChainLen: integer;  { the length of the chain,     }
                        { length = 0 means layered protocol, }
                        { length = 1 means base protocol,}
                        { length > 1 means protocol chain}
    ChainEntries : array[0..MAX_PROTOCOL_CHAIN-1] of Longword; { a list of dwCatalogEntryIds }
  end;

  PWSAPROTOCOL_INFOA = ^TWSAPROTOCOL_INFOA;
  TWSAPROTOCOL_INFOA = packed record
    dwServiceFlags1      : longword;
    dwServiceFlags2      : longword;
    dwServiceFlags3      : longword;
    dwServiceFlags4      : longword;
    dwProviderFlags      : longword;
    ProviderId           : TGUID;
    dwCatalogEntryId     : longword;
    ProtocolChain        : TWSAPROTOCOLCHAIN;
    iVersion             : integer;
    iAddressFamily       : integer;
    iMaxSockAddr         : integer;
    iMinSockAddr         : integer;
    iSocketType          : integer;
    iProtocol            : integer;
    iProtocolMaxOffset   : integer;
    iNetworkByteOrder    : integer;
    iSecurityScheme      : integer;
    dwMessageSize        : longword;
    dwProviderReserved   : longword;
    szProtocol           : array [0..WSAPROTOCOL_LEN+1-1] of char;
  end;

  PWSAOVERLAPPED_COMPLETION_ROUTINE = procedure(dwError:longword;
                                                cbTransferred:longword; lpOverlapped:LPWSAOVERLAPPED;
                                                dwFlags:longword); stdcall;

  function WSASocket(af:integer; atype:integer; protocol:integer;
                     lpProtocolInfo:PWSAPROTOCOL_INFOA; g:TGroup; dwFlags:longword):TSocket; stdcall;

  function WSAIoctl(s:TSocket; dwIoControlCode:longword; lpvInBuffer:Pointer;
                    cbInBuffer:longword; lpvOutBuffer:Pointer; cbOutBuffer:longword;
                    lpcbBytesReturned:Plongword; lpOverlapped:LPWSAOVERLAPPED;
                    lpCompletionRoutine:PWSAOVERLAPPED_COMPLETION_ROUTINE):integer; stdcall;

type
  TNetCardData = class
    private
    public
      socket: TSocket;
      numInterfaceCards: integer;
      ipAddress: array [1..21] of string;
      interfaceList: array [0..20] of TINTERFACE_INFO;
      constructor Create;
      function GetNumOfInterfaces: integer;virtual;
  end;

implementation

const
  winsocket = 'ws2_32.dll';

  function WSASocket;    external     winsocket name 'WSASocketA';
  function WSAIoctl;     external     winsocket name 'WSAIoctl';

constructor TNetCardData.Create;
var
  wsadata: TWSAData;
  err,i,reOrder: integer;
begin
  numInterfaceCards:=-1;
  try
    err := WSAStartup($202,wsadata);
    if (err = 0) then
    begin
      numInterfaceCards := GetNumOfInterfaces;    // this really gets all of the data
      if numInterfaceCards <> -1 then
      begin
        reOrder := 1;
        for i := numInterfaceCards-1 downTo 1  do // I do not want the self address of 127.0.0.1
        begin
          ipAddress[reOrder] := inet_ntoa(TSockAddrIn(interfaceList[i-1].iiAddress).sin_Addr);
          reOrder := succ(reOrder);    // the cards are in the interfacelist high to low.
        end;                           // I want the order to be low to high.
      end;
      numInterfaceCards := numInterfaceCards-1;    // I do not want the self address of 127.0.0.1
    end;
  finally
    WSACleanup;
  end;
end;

function TNetCardData.GetNumOfInterfaces:integer;
var
  err: integer;
  nBytesReturned: longint;
begin
  result := -1;
  socket := WSASocket(AF_INET,SOCK_DGRAM,0,nil,0,0);
  if socket = SOCKET_ERROR then
    Exit;
  err := WSAIoctl(socket, SIO_GET_INTERFACE_LIST, nil, 0,
                  @interfaceList, sizeOf(interfaceList), @nBytesReturned, nil, nil);
  if err = 0 then
    result := nBytesReturned div sizeOf(TINTERFACE_INFO);
  closesocket(socket);
end;

end.





411   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] À©µµ¿ìÁî ¸Þ¸ðÀåÀÇ ÆíÁý³»¿ëÀ» °¡Á®¿À±â  ±è¿µ´ë 2003/03/07 4003 1095
410   [À©µµ¿ìÁî API] À©µµ¿ìÁî"½ÃÀÛ" ¹öư Disable/Enable  ±è¿µ´ë 2003/03/07 4549 1210
409   [À©µµ¿ìÁî API] TaskBarÀÇ ´Ù¾çÇÑ ±â´ÉÁ¦¾î  ±è¿µ´ë 2003/03/07 5256 3432
408   [½Ã½ºÅÛ] À©µµ¿ìÁî ÀüüÀÇ Å°º¸µå ÀÔ·Â ±ÝÁö  ±è¿µ´ë 2003/03/07 4582 1228
407   [µ¥ÀÌÅͺ£À̽º] SQL½ÇÇà½ÃÀÇ ¸ð·¡½Ã°è¸¦ Ç¥½ÃÇÏÁö ¾Ê´Â ¹æ¹ý  ±è¿µ´ë 2003/03/07 4670 1154
406   [À©µµ¿ìÁî API] Ä¿¼­(ÄÉ·µ)ÀÇ ±ô¹ÚÀÓ ¼Óµµ¸¦ º¯°æÇÏ±â  ±è¿µ´ë 2003/03/07 4822 1270
405   [µ¥ÀÌÅͺ£À̽º] µ¥ÀÌŸº£À̽º ·Î±×ÀÎ(login) È­¸é ¶ç¿ì±â  ±è¿µ´ë 2003/03/07 4104 1030
404   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] °£´ÜÈ÷ È­¸é ÇϵåÄ«ÇÇ(snapshot) ÇÏ±â  ±è¿µ´ë 2003/03/07 4792 1149
403   [À©µµ¿ìÁî API] ½ºÅ©¸° ¼¼À̹öÀÇ ±âµ¿½Ã°£ ¹Ù²Ù±â  ±è¿µ´ë 2003/03/07 4318 1309
402   [½Ã½ºÅÛ] Æú´õÀÇ º¯°æ¿©ºÎ¸¦ °¨½ÃÇÏ±â  ±è¿µ´ë 2003/03/07 5792 1285
401   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] Àü°¢¹®ÀÚÀÎÁö ¹Ý°¢¹®ÀÚÀÎÁö °Ë»çÇÏ±â  ±è¿µ´ë 2003/03/07 6750 1261
400   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ¹®ÀÚ¿­ÀÇ ¹ÙÀÌÆ®¼ö°¡ ¾Æ´Ñ ½ÇÁ¦ ±ÛÀÚ¼ö ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 5023 1142
399   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ÀÓ½ÃÆÄÀϸí ÀÚµ¿À¸·Î »ý¼ºÇÏ±â  ±è¿µ´ë 2003/03/07 5218 1664
398   [µ¥ÀÌÅͺ£À̽º] DBGridÀÇ ¼öÁ÷À̵¿ ¸·´ë °¨Ãß±â  ±è¿µ´ë 2003/03/07 4827 1239
397   [½Ã½ºÅÛ] ÇÁ¸°ÅÍ ¸®½ºÆ®¸¦ ±¸ÇÏ¿© ±âº» ÇÁ¸°ÅÍ º¯°æÇÏ±â  ±è¿µ´ë 2003/03/07 13186 1294
396   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ŸÀÌÆ²¹Ù Ŭ¸¯½Ã »ç¿ëÀÚ ÆË¾÷¸Þ´º º¸ÀÌ±â  ±è¿µ´ë 2003/03/07 4901 1180
395   [À©µµ¿ìÁî API] ÆûÀ» ÃÖÇÏÀ§(?)·Î ¼³Á¤ÇÏ±â  ±è¿µ´ë 2003/03/07 4846 1277
394   [½Ã½ºÅÛ] ½Ã½ºÅÛ¿¡ µî·ÏµÈ ÇÑ±ÛÆùÆ®ÀÇ ¸®½ºÆ®  ±è¿µ´ë 2003/03/07 5265 1547
393   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] StringGrid ÀÇ BeginUpdate/EndUpdate ?  ±è¿µ´ë 2003/03/07 5475 1171
392   [À©µµ¿ìÁî API] ¹ÙÅÁÈ­¸é ¾ÆÀÌÄÜÀÇ ±ÛÀÚ»ö ¹Ù²Ù±â  ±è¿µ´ë 2003/03/07 5148 1300
391   [À©µµ¿ìÁî API] ½ºÅ©¸° ¼¼À̹ö ºñ¹Ð¹øÈ£ ¾Ë¾Æ³»±â  ±è¿µ´ë 2003/03/07 4892 1203
390   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ÆÄÀÏ¿¡¼­ ƯÁ¤ Byte ¸ðµÎ ã±â  ±è¿µ´ë 2003/03/07 4522 1156
  [³×Æ®¿÷/ÀÎÅͳÝ] Network Adaptor °¡ ¿©·¯°³ÀÎ °æ¿ìÀÇ IP ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 6267 1569
388   [½Ã½ºÅÛ] ÇÁ¸°Æ® ½ºÇ®·¯ Á¦¾î¹æ¹ý  ±è¿µ´ë 2003/03/07 6590 1882
387   [À©µµ¿ìÁî API] ¹ÙÅÁÈ­¸é ¾ÆÀÌÄÜÀÇ ±ÛÀÚ»ö ¹Ù²Ù±â2  ±è¿µ´ë 2003/03/07 5202 1467
386   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] º£Áê(Bezier) °î¼± ±×¸®±â  ±è¿µ´ë 2003/03/07 4823 1439
385   [À©µµ¿ìÁî API] Á¤ÀǵÇÁö ¾ÊÀº Alt+Ű ÀԷ½à BeepÀ½ Á¦°Å  ±è¿µ´ë 2003/03/07 4376 1234
384   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ºÎȰÀý ´Þ°¿(easter egg) ¹®ÀÚ¿­ ÀÔ·Â¹Þ±â  ±è¿µ´ë 2003/03/07 4807 1158
383   [½Ã½ºÅÛ] Delphi VCL »ç¿ë¾ÈÇϰí ÇÁ·Î±×·¥ ¸¸µé±â  ±è¿µ´ë 2003/03/07 5288 1329
382   [À©µµ¿ìÁî API] CTRL+ALT+DEL ¿¡ ³ªÅ¸³ªÁö ¾Ê´Â ÇÁ·Î±×·¥  ±è¿µ´ë 2003/03/07 5172 1292
381   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] º£Áê(Bezier) °î¼± ±×¸®±â2  ±è¿µ´ë 2003/03/07 4866 1160
380   [½Ã½ºÅÛ] Űº¸µå ÀÚµ¿¹Ýº¹Áö¿¬ Àбâ/¼³Á¤  ±è¿µ´ë 2003/03/07 4677 1192
379   [½Ã½ºÅÛ] Űº¸µå ÀÚµ¿¹Ýº¹¼Óµµ Àбâ/¼³Á¤  ±è¿µ´ë 2003/03/07 5458 1492
378   [½Ã½ºÅÛ] À©µµ¿ìÁî ĸ¼ÇÀÇ ³ôÀÌ Àбâ/¼³Á¤  ±è¿µ´ë 2003/03/07 4455 1218
377   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ListView ÀÇ column header ¿À¸¥ÂÊ¿¡ À̹ÌÁö ³Ö±â  ±è¿µ´ë 2003/03/07 4981 1210
376   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] Delphi 4 Secret Registry Settings  ±è¿µ´ë 2003/03/07 6443 1581
375   [µ¥ÀÌÅͺ£À̽º] Record Lock °Ë»ç  ±è¿µ´ë 2003/03/07 4303 1123
374   [À©µµ¿ìÁî API] Áñ°Üã±â Æú´õÀÇ ÆÄÀÏ¿¡¼­ URL »Ì¾Æ³»±â  ±è¿µ´ë 2003/03/07 5294 1299
373   [½Ã½ºÅÛ] CD-ROMÀÇ º¯°æ¿©ºÎ¸¦ °¨½ÃÇÏ±â  ±è¿µ´ë 2003/03/07 5006 1309
372   [½Ã½ºÅÛ] Locking/ Unlocking floppy driver or CD  ±è¿µ´ë 2003/03/07 4298 1222

[ÀÌÀü 10°³] [1]..[11][12][13][14] 15 [16][17][18][19][20]..[25] [´ÙÀ½ 10°³]
 

Copyright 1999-2022 Zeroboard / skin by zero