- function ResolveHost(HostName: ansistring): in_addr;
- function ResolveIP(IP: in_addr): ansistring;
+ PAddrInfo = ^TAddrInfo;
+ TAddrInfo = record
+ ai_flags: cint;
+ ai_family: cint;
+ ai_socktype: cint;
+ ai_protocol: cint;
+ ai_addrlen: size_t;
+ ai_canonname: PChar;
+ ai_addr: PSockAddr;
+ ai_next: PAddrInfo;
+ end;
+
+ TGAIResult = record
+ GAIError: integer;
+ AddrInfo: PAddrInfo;
+ end;
+
+
+ function getaddrinfo(NodeName, ServiceName: PChar; Hints: PAddrInfo; var AddrInfo: PAddrInfo): cint; stdcall;
+ external 'ws2_32.dll' name 'getaddrinfo';
+
+ procedure freeaddrinfo(AddrInfo: PAddrInfo); stdcall;
+ external 'ws2_32.dll' name 'freeaddrinfo';
+
+ function getnameinfo(SockAddr: PSockAddr; SockAddrLength: cuint32; NodeBuffer: PChar; NodeBufferSize: cuint32;
+ ServiceBuffer: PChar; ServiceBufferSize: cuint32; Flags: cint): cint; stdcall;
+ external 'ws2_32.dll' name 'getnameinfo';
+
+ function ResolveHost(HostName: ansistring): TGAIResult;
+ procedure FreeHost(var GAIResult: TGAIResult);
+ function ResolveIP(SockAddr: PSockAddr): ansistring;