12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- unit lws2tcpip;
- {$mode delphi}
- interface
- uses
- WinSock2;
- const
- ws2tcpip = 'ws2_32.dll';
- AI_PASSIVE = $1;
- AI_CANONNAME = $2;
- AI_NUMERICHOST = $4;
- type
- LPADDRINFO = ^addrinfo;
- addrinfo = record
- ai_flags: Integer;
- ai_family: Integer;
- ai_socktype: Integer;
- ai_protocol: Integer;
- ai_addrlen: size_t;
- ai_canonname: PChar;
- ai_addr: PSockAddr;
- ai_next: LPADDRINFO;
- end;
- TAddrInfo = addrinfo;
- PAddrInfo = LPADDRINFO;
- function getaddrinfo(nodename, servname: PChar; hints: PAddrInfo; var res: PAddrInfo): Integer; stdcall;
- procedure freeaddrinfo(ai: PAddrInfo); stdcall;
- implementation
- uses
- dynlibs;
- type
- TGetAddrInfoFunc = function (nodename, servname: PChar; hints: PAddrInfo; var res: PAddrInfo): Integer; stdcall;
- TFreeAddrInfoProc = procedure (ai: PAddrInfo); stdcall;
- var
- _lib: TLibHandle;
- _getaddrinfo: TGetAddrInfoFunc;
- _freeaddrinfo: TFreeAddrInfoProc;
- function getaddrinfo(nodename, servname: PChar; hints: PAddrInfo;
- var res: PAddrInfo): Integer; stdcall;
- begin
- _getaddrinfo(nodename, servname, hints, res);
- end;
- procedure freeaddrinfo(ai: PAddrInfo); stdcall;
- begin
- end;
- initialization
- _lib := LoadLibrary(ws2tcpip);
- _getaddrinfo := GetProcedureAddress(_lib, 'getaddrinfo');
- _freeaddrinfo := GetProcedureAddress(_lib, 'freeaddrinfo');
- finalization
- UnloadLibrary(_lib);
- end.
|