Index: /trunk/ab5.0/ablib/src/api_ws2tcpip.sbp
===================================================================
--- /trunk/ab5.0/ablib/src/api_ws2tcpip.sbp	(revision 596)
+++ /trunk/ab5.0/ablib/src/api_ws2tcpip.sbp	(revision 596)
@@ -0,0 +1,95 @@
+/*
+#ifdef UNICODE
+Const _FuncName_getaddrinfo = "GetAddrInfoW"
+Const _FuncName_freeaddrinfo = "FreeAddrInfoW"
+Const _FuncName_getnameinfo = "GetNameInfoW"
+Const _FuncName_inet_pton = "InetPtonW"
+Const _FuncName_inet_ntop = "InetNtopW"
+#else
+Const _FuncName_getaddrinfo = "GetAddrInfoA"
+Const _FuncName_freeaddrinfo = "FreeAddrInfoA"
+Const _FuncName_getnameinfo = "GetNameInfoA"
+Const _FuncName_inet_pton = "InetPton"
+Const _FuncName_inet_ntop = "InetNtop"
+#endif
+*/
+
+Const _FuncName_getaddrinfo = "getaddrinfo"
+Const _FuncName_freeaddrinfo = "freeaddrinfo"
+Const _FuncName_getnameinfo = "getnameinfo"
+
+Const INET_ADDRSTRLEN = 22
+Const INET6_ADDRSTRLEN = 65
+
+Const EAI_AGAIN     = WSATRY_AGAIN
+Const EAI_BADFLAGS  = WSAEINVAL
+Const EAI_FAIL      = WSANO_RECOVERY
+Const EAI_FAMILY    = WSAEAFNOSUPPORT
+Const EAI_MEMORY    = WSA_NOT_ENOUGH_MEMORY
+'Const EAI_NODATA   =  WSANO_DATA
+Const EAI_NONAME    = WSAHOST_NOT_FOUND
+Const EAI_SERVICE   = WSATYPE_NOT_FOUND
+Const EAI_SOCKTYPE  = WSAESOCKTNOSUPPORT
+
+Const EAI_NODATA    = EAI_NONAME
+
+Type addrinfo
+	ai_flags As Long
+	ai_family As Long
+	ai_socktype As Long
+	ai_protocol As Long
+	ai_addrlen As DWord
+	ai_canonname As PTSTR
+	ai_addr As *sockaddr
+	ai_next As *addrinfo
+End Type
+
+Const AI_PASSIVE     = &H00000001  ' Socket address will be used in bind() call
+Const AI_CANONNAME   = &H00000002  ' Return canonical name in first ai_canonname
+Const AI_NUMERICHOST = &H00000004  ' Nodename must be a numeric address string
+Const AI_NUMERICSERV = &H00000008  ' Servicename must be a numeric port number
+
+Const AI_ALL         = &H00000100  ' Query both IP6 and IP4 with AI_V4MAPPED
+Const AI_ADDRCONFIG  = &H00000400  ' Resolution only if global address configured
+Const AI_V4MAPPED    = &H00000800  ' On v6 failure, query v4 and convert to V4MAPPED format
+
+
+Const AI_NON_AUTHORITATIVE       = &H4000   ' LUP_NON_AUTHORITATIVE
+Const AI_SECURE                  = &H8000   'LUP_SECURE 
+Const AI_RETURN_PREFERRED_NAMES  = &H10000  ' LUP_RETURN_PREFERRED_NAMES
+
+TypeDef socklen_t = Long
+
+Declare Function getaddrinfo Lib "Ws2_32" Alias _FuncName_getaddrinfo (pNodeName As LPCTSTR, pServiceName As LPCTSTR, ByRef pHints As addrinfo, ByRef ppResult As *addrinfo) As Long
+Declare Sub freeaddrinfo Lib "Ws2_32" Alias _FuncName_freeaddrinfo (ByRef ai As addrinfo)
+Declare Function getnameinfo Lib "Ws2_32" Alias _FuncName_getnameinfo (ByRef sa As sockaddr, salen As socklen_t, host As LPTSTR, hostlen As SIZE_T, serv As LPTSTR, servlen As SIZE_T, flags As Long) As Long
+
+/*
+Declare Function inet_pton Lib "Ws2_32" Alias _FuncName_inet_pton (family As Long, pszAddrString As LPCTSTR, pAddrBuf As VoidPtr) As Long
+Declare Function inet_ntop Lib "Ws2_32" Alias _FuncName_inet_ntop (family As Long, pAddr As VoidPtr, pStringBuf As LPTSTR, StringBufSize As SIZE_T) As LPCTSTR
+*/
+
+Const GAI_STRERROR_BUFFER_SIZE = 1024
+Function gai_strerror( ecode As Long) As LPCTSTR
+	Dim dwMsgLen As DWord
+	Dim buff[GAI_STRERROR_BUFFER_SIZE] As SByte
+	dwMsgLen = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM or FORMAT_MESSAGE_IGNORE_INSERTS,
+                             NULL,
+                             ecode,
+                             LANG_USER_DEFAULT,
+                             buff,
+                             GAI_STRERROR_BUFFER_SIZE,
+                             NULL)
+	Return buff
+End Function
+
+Const NI_MAXHOST = 1025  /* Max size of a fully-qualified domain name */
+Const NI_MAXSERV = 32    /* Max size of a service name */
+
+/* Flags for getnameinfo() */
+
+Const NI_NOFQDN       = &H01  /* Only return nodename portion for local hosts */
+Const NI_NUMERICHOST  = &H02  /* Return numeric form of the host's address */
+Const NI_NAMEREQD     = &H04  /* Error if the host's name not in DNS */
+Const NI_NUMERICSERV  = &H08  /* Return numeric form of the service (port #) */
+Const NI_DGRAM        = &H10  /* Service is a datagram service */
