Difference between revisions of "Unit Winsock2"

From Ultibo.org
Jump to: navigation, search
(Created page with "Return to Unit Reference === Description === ---- ''To be documented'' === Constants === ---- ''To be documented'' === Type definitions === ---- ''To...")
 
 
(38 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
----
 
----
  
''To be documented''
+
'''Ultibo Winsock2 Interface unit'''
 +
 
 +
''Notes:''
 +
* All BSD/Winsock functions that accept an Address or Port expect them to be in Network byte order.
 +
* All other functions that take an Address or Port expect them to be in Host byte order.
  
 
=== Constants ===
 
=== Constants ===
 
----
 
----
  
''To be documented''
+
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Winsock2 specific constants''' <code> WINSOCK_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>WINSOCK_VERSION = $0202;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>WINSOCK_TCP_SERVER_THREAD_NAME = 'TCP Server';</code>
 +
| Thread name for TCP server threads
 +
|-
 +
| <code>WINSOCK_TCP_SERVER_THREAD_PRIORITY = THREAD_PRIORITY_NORMAL;</code>
 +
| Thread priority for TCP server threads
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>WINSOCK_TCP_LISTENER_THREAD_NAME = 'TCP Listener';</code>
 +
| Thread name for TCP listener threads
 +
|-
 +
| <code>WINSOCK_TCP_LISTENER_THREAD_PRIORITY = THREAD_PRIORITY_NORMAL;</code>
 +
| Thread priority for TCP listener threads
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>WINSOCK_UDP_SERVER_THREAD_NAME = 'UDP Server';</code>
 +
| Thread name for UDP server threads
 +
|-
 +
| <code>WINSOCK_UDP_SERVER_THREAD_PRIORITY = THREAD_PRIORITY_NORMAL;</code>
 +
| Thread priority for UDP server threads
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>WINSOCK_UDP_LISTENER_THREAD_NAME = 'UDP Listener';</code>
 +
| Thread name for UDP listener threads
 +
|-
 +
| <code>WINSOCK_UDP_LISTENER_THREAD_PRIORITY = THREAD_PRIORITY_NORMAL;</code>
 +
| Thread priority for UDP listener threads
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FD_SETSIZE = GlobalSock.FD_SETSIZE;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>IOCPARM_MASK = GlobalSock.IOCPARM_MASK;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IOC_VOID = GlobalSock.IOC_VOID;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IOC_OUT = GlobalSock.IOC_OUT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IOC_IN = GlobalSock.IOC_IN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IOC_INOUT = GlobalSock.IOC_INOUT;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FIONREAD = GlobalSock.FIONREAD; </code>
 +
| &nbsp;
 +
|-
 +
| <code>FIONBIO = GlobalSock.FIONBIO;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FIOASYNC = GlobalSock.FIOASYNC;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>SIOCSHIWAT = GlobalSock.SIOCSHIWAT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SIOCGHIWAT = GlobalSock.SIOCGHIWAT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SIOCSLOWAT = GlobalSock.SIOCSLOWAT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SIOCGLOWAT = GlobalSock.SIOCGLOWAT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SIOCATMARK = GlobalSock.SIOCATMARK;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>IMPLINK_IP = GlobalSock.IMPLINK_IP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IMPLINK_LOWEXPER = GlobalSock.IMPLINK_LOWEXPER;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IMPLINK_HIGHEXPER = GlobalSock.IMPLINK_HIGHEXPER;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>TF_DISCONNECT = GlobalSock.TF_DISCONNECT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TF_REUSE_SOCKET = GlobalSock.TF_REUSE_SOCKET;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TF_WRITE_BEHIND = GlobalSock.TF_WRITE_BEHIND;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>INET_ADDRSTR_ANY = GlobalSock.INET_ADDRSTR_ANY;</code>
 +
| &nbsp;
 +
|-
 +
| <code>INET6_ADDRSTR_ANY = GlobalSock.INET6_ADDRSTR_ANY;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>INET_ADDRSTR_BROADCAST = GlobalSock.INET_ADDRSTR_BROADCAST;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>INET_ADDRSTRLEN = GlobalSock.INET_ADDRSTRLEN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>INET6_ADDRSTRLEN = GlobalSock.INET6_ADDRSTRLEN;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>IN6ADDR_ANY_INIT:TIn6Addr = (u6_addr16: (0, 0, 0, 0, 0, 0, 0, 0));</code>
 +
| &nbsp;
 +
|-
 +
| <code>IN6ADDR_LOOPBACK_INIT:TIn6Addr = (u6_addr8: (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1));</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>INADDR_ANY = GlobalSock.INADDR_ANY;</code>
 +
| &nbsp;
 +
|-
 +
| <code>INADDR_LOOPBACK = GlobalSock.INADDR_LOOPBACK;</code>
 +
| &nbsp;
 +
|-
 +
| <code>INADDR_BROADCAST = GlobalSock.INADDR_BROADCAST;</code>
 +
| &nbsp;
 +
|-
 +
| <code>INADDR_NONE = GlobalSock.INADDR_NONE;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>IN6ADDR_ANY:TIn6Addr = (u6_addr16: (0, 0, 0, 0, 0, 0, 0, 0));</code>
 +
| &nbsp;
 +
|-
 +
| <code>IN6ADDR_LOOPBACK:TIn6Addr = (u6_addr8: (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1));</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>IN6ADDR_NONE:TIn6Addr = (u6_addr16: ($ffff, $ffff, $ffff, $ffff, $ffff, $ffff, $ffff, $ffff));</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Level number for (get/set)sockopt() to apply to socket itself''
 +
|-
 +
| <code>SOL_SOCKET = GlobalSock.SOL_SOCKET;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Maximum queue length specifiable by listen''
 +
|-
 +
| <code>SOMAXCONN = GlobalSock.SOMAXCONN;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Return flags''
 +
|-
 +
| <code>RESULT_IS_ALIAS = $0001;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>SERVICE_MULTIPLE = $00000001;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>BIGENDIAN = $0000;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LITTLEENDIAN = $0001;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>SECURITY_PROTOCOL_NONE = $0000;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''This is used instead of -1, since the TSocket type is unsigned''
 +
|-
 +
| <code>INVALID_SOCKET = GlobalSock.INVALID_SOCKET;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SOCKET_ERROR = GlobalSock.SOCKET_ERROR;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Define constant based on rfc883, used by gethostbyxxxx() calls''
 +
|-
 +
| <code>MAXGETHOSTSTRUCT = GlobalSock.MAXGETHOSTSTRUCT;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>WSADESCRIPTION_LEN = GlobalSock.WSADESCRIPTION_LEN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSASYS_STATUS_LEN = GlobalSock.WSASYS_STATUS_LEN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>MAX_PROTOCOL_CHAIN = 7;</code>
 +
| &nbsp;
 +
|-
 +
| <code>BASE_PROTOCOL = 1;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LAYERED_PROTOCOL = 0;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAPROTOCOL_LEN = 255;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''WSARecvMsg flags''
 +
|-
 +
| <code>MSG_TRUNC =  $0100;</code>
 +
| &nbsp;
 +
|-
 +
| <code>MSG_CTRUNC =  $0200;</code>
 +
| &nbsp;
 +
|-
 +
| <code>MSG_BCAST =  $0400;</code>
 +
| &nbsp;
 +
|-
 +
| <code>MSG_MCAST =  $0800;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Event flag definitions for WSAPoll()''
 +
|-
 +
| <code>POLLRDNORM = $0100;</code>
 +
| &nbsp;
 +
|-
 +
| <code>POLLRDBAND = $0200;</code>
 +
| &nbsp;
 +
|-
 +
| <code>POLLIN = (POLLRDNORM or POLLRDBAND);</code>
 +
| &nbsp;
 +
|-
 +
| <code>POLLPRI = $0400;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>POLLWRNORM = $0010;</code>
 +
| &nbsp;
 +
|-
 +
| <code>POLLOUT = (POLLWRNORM);</code>
 +
| &nbsp;
 +
|-
 +
| <code>POLLWRBAND = $0020;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>POLLERR = $0001;</code>
 +
| &nbsp;
 +
|-
 +
| <code>POLLHUP = $0002;</code>
 +
| &nbsp;
 +
|-
 +
| <code>POLLNVAL = $0004;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''IP protocol''' <code> IPPROTO_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>IPPROTO_IP = GlobalSock.IPPROTO_IP;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>IPPROTO_ICMP = GlobalSock.IPPROTO_ICMP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPROTO_IGMP = GlobalSock.IPPROTO_IGMP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPROTO_GGP = GlobalSock.IPPROTO_GGP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPROTO_TCP = GlobalSock.IPPROTO_TCP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPROTO_EGP = GlobalSock.IPPROTO_EGP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPROTO_PUP = GlobalSock.IPPROTO_PUP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPROTO_UDP = GlobalSock.IPPROTO_UDP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPROTO_HMP = GlobalSock.IPPROTO_HMP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPROTO_IDP = GlobalSock.IPPROTO_IDP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPROTO_RDP = GlobalSock.IPPROTO_RDP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPROTO_IPV6 = GlobalSock.IPPROTO_IPV6;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPROTO_ROUTING = GlobalSock.IPPROTO_ROUTING;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPROTO_FRAGMENT = GlobalSock.IPPROTO_FRAGMENT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPROTO_ICMPV6 = GlobalSock.IPPROTO_ICMPV6;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPROTO_RVD = GlobalSock.IPPROTO_RVD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPROTO_ND = GlobalSock.IPPROTO_ND;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPROTO_RAW = GlobalSock.IPPROTO_RAW;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPROTO_MAX = GlobalSock.IPPROTO_MAX;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''IP port''' <code> IPPORT_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|''Port/socket numbers: network standard functions''
 +
|-
 +
| <code>IPPORT_ANY = GlobalSock.IPPORT_ANY;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>IPPORT_ECHO = GlobalSock.IPPORT_ECHO;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_DISCARD = GlobalSock.IPPORT_DISCARD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_SYSTAT = GlobalSock.IPPORT_SYSTAT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_DAYTIME = GlobalSock.IPPORT_DAYTIME;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_NETSTAT = GlobalSock.IPPORT_NETSTAT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_FTP = GlobalSock.IPPORT_FTP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_TELNET = GlobalSock.IPPORT_TELNET;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_SMTP = GlobalSock.IPPORT_SMTP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_TIMESERVER = GlobalSock.IPPORT_TIMESERVER;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_NAMESERVER = GlobalSock.IPPORT_NAMESERVER;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_WHOIS = GlobalSock.IPPORT_WHOIS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_DNS = GlobalSock.IPPORT_DNS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_MTP = GlobalSock.IPPORT_MTP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_BOOTPS = GlobalSock.IPPORT_BOOTPS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_BOOTPC = GlobalSock.IPPORT_BOOTPC;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Port/socket numbers: host specific functions''
 +
|-
 +
| <code>IPPORT_TFTP = GlobalSock.IPPORT_TFTP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_RJE = GlobalSock.IPPORT_RJE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_FINGER = GlobalSock.IPPORT_FINGER;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_TTYLINK = GlobalSock.IPPORT_TTYLINK;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_SUPDUP = GlobalSock.IPPORT_SUPDUP;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''UNIX TCP sockets''
 +
|-
 +
| <code>IPPORT_EXECSERVER = GlobalSock.IPPORT_EXECSERVER;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_LOGINSERVER = GlobalSock.IPPORT_LOGINSERVER;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_CMDSERVER = GlobalSock.IPPORT_CMDSERVER;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_EFSSERVER = GlobalSock.IPPORT_EFSSERVER;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''UNIX UDP sockets''
 +
|-
 +
| <code>IPPORT_BIFFUDP = GlobalSock.IPPORT_BIFFUDP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_WHOSERVER = GlobalSock.IPPORT_WHOSERVER;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IPPORT_ROUTESERVER = GlobalSock.IPPORT_ROUTESERVER;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Ports < IPPORT_RESERVED are reserved for privileged processes (e.g. root)''
 +
|-
 +
| <code>IPPORT_RESERVED = GlobalSock.IPPORT_RESERVED;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''IP option''' <code> IP_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Options for use with [gs]etsockopt at the IP level
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>IP_OPTIONS = GlobalSock.IP_OPTIONS;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>IP_MULTICAST_IF = GlobalSock.IP_MULTICAST_IF;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IP_MULTICAST_TTL = GlobalSock.IP_MULTICAST_TTL;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IP_MULTICAST_LOOP = GlobalSock.IP_MULTICAST_LOOP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IP_ADD_MEMBERSHIP = GlobalSock.IP_ADD_MEMBERSHIP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IP_DROP_MEMBERSHIP = GlobalSock.IP_DROP_MEMBERSHIP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IP_TTL = GlobalSock.IP_TTL;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IP_TOS = GlobalSock.IP_TOS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IP_DONTFRAGMENT = GlobalSock.IP_DONTFRAGMENT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IP_HDRINCL = GlobalSock.IP_HDRINCL;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>IP_DEFAULT_MULTICAST_TTL = GlobalSock.IP_DEFAULT_MULTICAST_TTL;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IP_DEFAULT_MULTICAST_LOOP = GlobalSock.IP_DEFAULT_MULTICAST_LOOP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IP_MAX_MEMBERSHIPS = GlobalSock.IP_MAX_MEMBERSHIPS;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Socket type''' <code> SOCK_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>SOCK_UNSPEC = GlobalSock.SOCK_UNSPEC;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>SOCK_STREAM = GlobalSock.SOCK_STREAM;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SOCK_DGRAM = GlobalSock.SOCK_DGRAM;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SOCK_RAW = GlobalSock.SOCK_RAW;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SOCK_RDM = GlobalSock.SOCK_RDM;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SOCK_SEQPACKET = GlobalSock.SOCK_SEQPACKET;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SOCK_PACKET = GlobalSock.SOCK_PACKET;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Socket option''' <code> SO_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>SO_DEBUG = GlobalSock.SO_DEBUG;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>SO_ACCEPTCONN = GlobalSock.SO_ACCEPTCONN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_REUSEADDR = GlobalSock.SO_REUSEADDR;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_KEEPALIVE = GlobalSock.SO_KEEPALIVE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_DONTROUTE = GlobalSock.SO_DONTROUTE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_BROADCAST = GlobalSock.SO_BROADCAST;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_USELOOPBACK = GlobalSock.SO_USELOOPBACK;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_LINGER = GlobalSock.SO_LINGER;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_OOBINLINE = GlobalSock.SO_OOBINLINE;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>SO_DONTLINGER = GlobalSock.SO_DONTLINGER;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_EXCLUSIVEADDRUSE = GlobalSock.SO_EXCLUSIVEADDRUSE;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Additional options''
 +
|-
 +
| <code>SO_SNDBUF = GlobalSock.SO_SNDBUF;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_RCVBUF = GlobalSock.SO_RCVBUF;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_SNDLOWAT = GlobalSock.SO_SNDLOWAT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_RCVLOWAT = GlobalSock.SO_RCVLOWAT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_SNDTIMEO = GlobalSock.SO_SNDTIMEO;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_RCVTIMEO = GlobalSock.SO_RCVTIMEO;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_ERROR = GlobalSock.SO_ERROR;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_TYPE = GlobalSock.SO_TYPE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_CONNTIMEO = GlobalSock.SO_CONNTIMEO;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Options for connect and disconnect data and options. Used only by non-TCP/IP transports such as DECNet, OSI TP4, etc''
 +
|-
 +
| <code>SO_CONNDATA = GlobalSock.SO_CONNDATA;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_CONNOPT = GlobalSock.SO_CONNOPT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_DISCDATA = GlobalSock.SO_DISCDATA;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_DISCOPT = GlobalSock.SO_DISCOPT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_CONNDATALEN = GlobalSock.SO_CONNDATALEN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_CONNOPTLEN = GlobalSock.SO_CONNOPTLEN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_DISCDATALEN = GlobalSock.SO_DISCDATALEN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_DISCOPTLEN = GlobalSock.SO_DISCOPTLEN;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Option for opening sockets for synchronous access''
 +
|-
 +
| <code>SO_OPENTYPE = GlobalSock.SO_OPENTYPE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_SYNCHRONOUS_ALERT = GlobalSock.SO_SYNCHRONOUS_ALERT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_SYNCHRONOUS_NONALERT = GlobalSock.SO_SYNCHRONOUS_NONALERT;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Other NT-specific options''
 +
|-
 +
| <code>SO_MAXDG = GlobalSock.SO_MAXDG;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_MAXPATHDG = GlobalSock.SO_MAXPATHDG;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_UPDATE_ACCEPT_CONTEXT = GlobalSock.SO_UPDATE_ACCEPT_CONTEXT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SO_CONNECT_TIME = GlobalSock.SO_CONNECT_TIME;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''TCP option''' <code> TCP_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>TCP_NODELAY= GlobalSock.TCP_NODELAY;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>TCP_MAXSEG = GlobalSock.TCP_MAXSEG;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TCP_NOPUSH = GlobalSock.TCP_NOPUSH;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TCP_NOOPT = GlobalSock.TCP_NOOPT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TCP_BSDURGENT = GlobalSock.TCP_BSDURGENT;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>TCP_WSCALE = GlobalSock.TCP_WSCALE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TCP_NOSACK = GlobalSock.TCP_NOSACK;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''UDP option''' <code> UDP_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>UDP_NOCHECKSUM = GlobalSock.UDP_NOCHECKSUM;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Address family''' <code> AF_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>AF_UNSPEC = GlobalSock.AF_UNSPEC;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>AF_UNIX = GlobalSock.AF_UNIX;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_INET = GlobalSock.AF_INET;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_IMPLINK = GlobalSock.AF_IMPLINK;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_PUP = GlobalSock.AF_PUP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_CHAOS = GlobalSock.AF_CHAOS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_IPX = GlobalSock.AF_IPX;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_NS = GlobalSock.AF_NS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_ISO = GlobalSock.AF_ISO;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_OSI = GlobalSock.AF_OSI;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_ECMA = GlobalSock.AF_ECMA;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_DATAKIT = GlobalSock.AF_DATAKIT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_CCITT = GlobalSock.AF_CCITT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_SNA = GlobalSock.AF_SNA;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_DECnet = GlobalSock.AF_DECnet;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_DLI = GlobalSock.AF_DLI;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_LAT = GlobalSock.AF_LAT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_HYLINK = GlobalSock.AF_HYLINK;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_APPLETALK = GlobalSock.AF_APPLETALK;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_NETBIOS = GlobalSock.AF_NETBIOS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_VOICEVIEW = GlobalSock.AF_VOICEVIEW;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_FIREFOX = GlobalSock.AF_FIREFOX;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_UNKNOWN1 = GlobalSock.AF_UNKNOWN1;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_BAN = GlobalSock.AF_BAN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_ATM = GlobalSock.AF_ATM;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_INET6 = GlobalSock.AF_INET6;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_CLUSTER = GlobalSock.AF_CLUSTER;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_12844 = GlobalSock.AF_12844;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_IRDA = GlobalSock.AF_IRDA;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_NETDES = GlobalSock.AF_NETDES;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>AF_MAX = GlobalSock.AF_MAX;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Protocol family''' <code> PF_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>PF_UNSPEC = GlobalSock.PF_UNSPEC;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>PF_UNIX = GlobalSock.PF_UNIX;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_INET = GlobalSock.PF_INET;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_IMPLINK = GlobalSock.PF_IMPLINK;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_PUP = GlobalSock.PF_PUP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_CHAOS = GlobalSock.PF_CHAOS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_NS = GlobalSock.PF_NS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_IPX = GlobalSock.PF_IPX;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_ISO = GlobalSock.PF_ISO;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_OSI = GlobalSock.PF_OSI;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_ECMA = GlobalSock.PF_ECMA;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_DATAKIT = GlobalSock.PF_DATAKIT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_CCITT = GlobalSock.PF_CCITT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_SNA = GlobalSock.PF_SNA;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_DECnet = GlobalSock.PF_DECnet;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_DLI = GlobalSock.PF_DLI;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_LAT = GlobalSock.PF_LAT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_HYLINK = GlobalSock.PF_HYLINK;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_APPLETALK = GlobalSock.PF_APPLETALK;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_VOICEVIEW = GlobalSock.PF_VOICEVIEW;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_FIREFOX = GlobalSock.PF_FIREFOX;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_UNKNOWN1 = GlobalSock.PF_UNKNOWN1;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_BAN = GlobalSock.PF_BAN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_ATM = GlobalSock.PF_ATM;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_INET6 = GlobalSock.PF_INET6;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_CLUSTER = GlobalSock.PF_CLUSTER;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_12844 = GlobalSock.PF_12844;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_IRDA = GlobalSock.PF_IRDA;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_NETDES = GlobalSock.PF_NETDES;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>PF_MAX = GlobalSock.PF_MAX;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Message flag''' <code> MSG_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>MSG_OOB = GlobalSock.MSG_OOB;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>MSG_PEEK = GlobalSock.MSG_PEEK;</code>
 +
| &nbsp;
 +
|-
 +
| <code>MSG_DONTROUTE = GlobalSock.MSG_DONTROUTE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>MSG_WAITALL = GlobalSock.MSG_WAITALL;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>MSG_INTERRUPT = GlobalSock.MSG_INTERRUPT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>MSG_MAXIOVLEN = GlobalSock.MSG_MAXIOVLEN;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>MSG_PARTIAL = GlobalSock.MSG_PARTIAL;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''FD option''' <code> FD_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|WinSock 2 extension -- bit values and indices for FD_XXX network events
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FD_READ_BIT = 0;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>FD_READ = (1 shl FD_READ_BIT);</code>
 +
| &nbsp;
 +
|-
 +
| <code>FD_WRITE_BIT = 1;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FD_WRITE = (1 shl FD_WRITE_BIT);</code>
 +
| &nbsp;
 +
|-
 +
| <code>FD_OOB_BIT = 2;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FD_OOB = (1 shl FD_OOB_BIT);</code>
 +
| &nbsp;
 +
|-
 +
| <code>FD_ACCEPT_BIT = 3;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FD_ACCEPT = (1 shl FD_ACCEPT_BIT);</code>
 +
| &nbsp;
 +
|-
 +
| <code>FD_CONNECT_BIT = 4;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FD_CONNECT = (1 shl FD_CONNECT_BIT);</code>
 +
| &nbsp;
 +
|-
 +
| <code>FD_CLOSE_BIT = 5;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FD_CLOSE = (1 shl FD_CLOSE_BIT);</code>
 +
| &nbsp;
 +
|-
 +
| <code>FD_QOS_BIT = 6;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FD_QOS = (1 shl FD_QOS_BIT);</code>
 +
| &nbsp;
 +
|-
 +
| <code>FD_GROUP_QOS_BIT = 7;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FD_GROUP_QOS = (1 shl FD_GROUP_QOS_BIT);</code>
 +
| &nbsp;
 +
|-
 +
| <code>FD_MAX_EVENTS = 8;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FD_ALL_EVENTS = ((1 shl FD_MAX_EVENTS) - 1);</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Socket error''' <code> WSAE* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|All Windows Sockets error constants are biased by WSABASEERR from the "normal"
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>WSABASEERR = GlobalSock.WSABASEERR;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Windows Sockets definitions of regular Microsoft C error constants''
 +
|-
 +
| <code>WSAEINTR = GlobalSock.WSAEINTR;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEBADF = GlobalSock.WSAEBADF;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEACCES = GlobalSock.WSAEACCES;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEFAULT = GlobalSock.WSAEFAULT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEINVAL = GlobalSock.WSAEINVAL;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEMFILE = GlobalSock.WSAEMFILE;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Windows Sockets definitions of regular Berkeley error constants''
 +
|-
 +
| <code>WSAEWOULDBLOCK = GlobalSock.WSAEWOULDBLOCK;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEINPROGRESS = GlobalSock.WSAEINPROGRESS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEALREADY = GlobalSock.WSAEALREADY;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAENOTSOCK = GlobalSock.WSAENOTSOCK;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEDESTADDRREQ = GlobalSock.WSAEDESTADDRREQ;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEMSGSIZE = GlobalSock.WSAEMSGSIZE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEPROTOTYPE = GlobalSock.WSAEPROTOTYPE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAENOPROTOOPT = GlobalSock.WSAENOPROTOOPT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEPROTONOSUPPORT = GlobalSock.WSAEPROTONOSUPPORT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAESOCKTNOSUPPORT = GlobalSock.WSAESOCKTNOSUPPORT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEOPNOTSUPP = GlobalSock.WSAEOPNOTSUPP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEPFNOSUPPORT = GlobalSock.WSAEPFNOSUPPORT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEAFNOSUPPORT = GlobalSock.WSAEAFNOSUPPORT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEADDRINUSE = GlobalSock.WSAEADDRINUSE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEADDRNOTAVAIL = GlobalSock.WSAEADDRNOTAVAIL;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAENETDOWN = GlobalSock.WSAENETDOWN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAENETUNREACH = GlobalSock.WSAENETUNREACH;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAENETRESET = GlobalSock.WSAENETRESET;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAECONNABORTED = GlobalSock.WSAECONNABORTED;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAECONNRESET = GlobalSock.WSAECONNRESET;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAENOBUFS = GlobalSock.WSAENOBUFS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEISCONN = GlobalSock.WSAEISCONN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAENOTCONN = GlobalSock.WSAENOTCONN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAESHUTDOWN = GlobalSock.WSAESHUTDOWN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAETOOMANYREFS = GlobalSock.WSAETOOMANYREFS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAETIMEDOUT = GlobalSock.WSAETIMEDOUT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAECONNREFUSED = GlobalSock.WSAECONNREFUSED;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAELOOP = GlobalSock.WSAELOOP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAENAMETOOLONG = GlobalSock.WSAENAMETOOLONG;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEHOSTDOWN = GlobalSock.WSAEHOSTDOWN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEHOSTUNREACH = GlobalSock.WSAEHOSTUNREACH;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAENOTEMPTY = GlobalSock.WSAENOTEMPTY;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEPROCLIM = GlobalSock.WSAEPROCLIM;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEUSERS = GlobalSock.WSAEUSERS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEDQUOT = GlobalSock.WSAEDQUOT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAESTALE = GlobalSock.WSAESTALE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEREMOTE = GlobalSock.WSAEREMOTE;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>WSAEDISCON = GlobalSock.WSAEDISCON;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Extended Windows Sockets error constant definitions''
 +
|-
 +
| <code>WSASYSNOTREADY = GlobalSock.WSASYSNOTREADY;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAVERNOTSUPPORTED = GlobalSock.WSAVERNOTSUPPORTED;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSANOTINITIALISED = GlobalSock.WSANOTINITIALISED;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>WSAENOMORE = GlobalSock.WSAENOMORE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAECANCELLED = GlobalSock.WSAECANCELLED;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEINVALIDPROCTABLE = GlobalSock.WSAEINVALIDPROCTABLE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEINVALIDPROVIDER = GlobalSock.WSAEINVALIDPROVIDER;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEPROVIDERFAILEDINIT = GlobalSock.WSAEPROVIDERFAILEDINIT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSASYSCALLFAILURE = GlobalSock.WSASYSCALLFAILURE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSASERVICE_NOT_FOUND = GlobalSock.WSASERVICE_NOT_FOUND;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSATYPE_NOT_FOUND = GlobalSock.WSATYPE_NOT_FOUND;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_E_NO_MORE = GlobalSock.WSA_E_NO_MORE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_E_CANCELLED = GlobalSock.WSA_E_CANCELLED;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSAEREFUSED = GlobalSock.WSAEREFUSED;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|Error return codes from gethostbyname() and gethostbyaddr() (when using the resolver). Note that these errors are retrieved via WSAGetLastError() and must therefore follow the rules for avoiding clashes with error numbers from specific implementations or language run-time systems. For this reason the codes are based at WSABASEERR+1001. Note also that [WSA]NO_ADDRESS is defined only for compatibility purposes.
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Authoritative Answer: Host not found''
 +
|-
 +
| <code>WSAHOST_NOT_FOUND = GlobalSock.WSAHOST_NOT_FOUND;</code>
 +
| &nbsp;
 +
|-
 +
| <code>HOST_NOT_FOUND = GlobalSock.HOST_NOT_FOUND;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Non-Authoritative: Host not found, or SERVERFAIL''
 +
|-
 +
| <code>WSATRY_AGAIN = GlobalSock.WSATRY_AGAIN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TRY_AGAIN = GlobalSock.TRY_AGAIN;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Non recoverable errors, FORMERR, REFUSED, NOTIMP''
 +
|-
 +
| <code>WSANO_RECOVERY = GlobalSock.WSANO_RECOVERY;</code>
 +
| &nbsp;
 +
|-
 +
| <code>NO_RECOVERY = GlobalSock.NO_RECOVERY;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Valid name, no data record of requested type''
 +
|-
 +
| <code>WSANO_DATA = GlobalSock.WSANO_DATA;</code>
 +
| &nbsp;
 +
|-
 +
| <code>NO_DATA = GlobalSock.NO_DATA;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''no address, look for MX record''
 +
|-
 +
| <code>WSANO_ADDRESS = GlobalSock.WSANO_ADDRESS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>NO_ADDRESS = GlobalSock.NO_ADDRESS;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''WinSock 2 extension -- new error codes and type definition''
 +
|-
 +
| <code>WSA_IO_PENDING = GlobalSock.WSA_IO_PENDING;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IO_INCOMPLETE = GlobalSock.WSA_IO_INCOMPLETE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_INVALID_HANDLE = GlobalSock.WSA_INVALID_HANDLE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_INVALID_PARAMETER = GlobalSock.WSA_INVALID_PARAMETER;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_NOT_ENOUGH_MEMORY = GlobalSock.WSA_NOT_ENOUGH_MEMORY;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_OPERATION_ABORTED = GlobalSock.WSA_OPERATION_ABORTED;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_INVALID_EVENT = GlobalSock.WSA_INVALID_EVENT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_MAXIMUM_WAIT_EVENTS = GlobalSock.WSA_MAXIMUM_WAIT_EVENTS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_WAIT_FAILED = GlobalSock.WSA_WAIT_FAILED;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_WAIT_EVENT_0 = GlobalSock.WSA_WAIT_EVENT_0;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_WAIT_IO_COMPLETION = GlobalSock.WSA_WAIT_IO_COMPLETION;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_WAIT_TIMEOUT = GlobalSock.WSA_WAIT_TIMEOUT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_INFINITE = GlobalSock.WSA_INFINITE;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Windows Sockets errors redefined as regular Berkeley error constants. These are commented out in Windows NT to avoid conflicts with errno.h. Use the WSA constants instead.''
 +
|-
 +
| <code>EWOULDBLOCK = GlobalSock.EWOULDBLOCK;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EINPROGRESS = GlobalSock.EINPROGRESS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EALREADY = GlobalSock.EALREADY;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ENOTSOCK = GlobalSock.ENOTSOCK;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EDESTADDRREQ = GlobalSock.EDESTADDRREQ;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EMSGSIZE = GlobalSock.EMSGSIZE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EPROTOTYPE = GlobalSock.EPROTOTYPE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ENOPROTOOPT = GlobalSock.ENOPROTOOPT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EPROTONOSUPPORT = GlobalSock.EPROTONOSUPPORT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ESOCKTNOSUPPORT = GlobalSock.ESOCKTNOSUPPORT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EOPNOTSUPP = GlobalSock.EOPNOTSUPP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EPFNOSUPPORT = GlobalSock.EPFNOSUPPORT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EAFNOSUPPORT = GlobalSock.EAFNOSUPPORT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EADDRINUSE = GlobalSock.EADDRINUSE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EADDRNOTAVAIL = GlobalSock.EADDRNOTAVAIL;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ENETDOWN = GlobalSock.ENETDOWN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ENETUNREACH = GlobalSock.ENETUNREACH;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ENETRESET = GlobalSock.ENETRESET;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ECONNABORTED = GlobalSock.ECONNABORTED;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ECONNRESET = GlobalSock.ECONNRESET;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ENOBUFS = GlobalSock.ENOBUFS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EISCONN = GlobalSock.EISCONN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ENOTCONN = GlobalSock.ENOTCONN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ESHUTDOWN = GlobalSock.ESHUTDOWN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ETOOMANYREFS = GlobalSock.ETOOMANYREFS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ETIMEDOUT = GlobalSock.ETIMEDOUT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ECONNREFUSED = GlobalSock.ECONNREFUSED;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ELOOP = GlobalSock.ELOOP;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ENAMETOOLONG = GlobalSock.ENAMETOOLONG;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EHOSTDOWN = GlobalSock.EHOSTDOWN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EHOSTUNREACH = GlobalSock.EHOSTUNREACH;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ENOTEMPTY = GlobalSock.ENOTEMPTY;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EPROCLIM = GlobalSock.EPROCLIM;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EUSERS = GlobalSock.EUSERS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EDQUOT = GlobalSock.EDQUOT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ESTALE = GlobalSock.ESTALE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EREMOTE = GlobalSock.EREMOTE;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>ENOTREADY = GlobalSock.ENOTREADY;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EVERNOTSUPPORTED = GlobalSock.EVERNOTSUPPORTED;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ENOTINITIALISED = GlobalSock.ENOTINITIALISED;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Error codes from getaddrinfo()''
 +
|-
 +
| <code>EAI_AGAIN = GlobalSock.EAI_AGAIN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EAI_BADFLAGS = GlobalSock.EAI_BADFLAGS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EAI_FAIL = GlobalSock.EAI_FAIL;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EAI_FAMILY = GlobalSock.EAI_FAMILY;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EAI_MEMORY = GlobalSock.EAI_MEMORY;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EAI_NODATA = GlobalSock.EAI_NODATA;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EAI_NONAME = GlobalSock.EAI_NONAME;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EAI_SERVICE = GlobalSock.EAI_SERVICE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EAI_SOCKTYPE = GlobalSock.EAI_SOCKTYPE;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>EAI_NODATA = GlobalSock.EAI_NODATA;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Condition function value''' <code> CF_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|WinSock 2 extension -- manifest constants for return values of the condition function
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>CF_ACCEPT = $0000;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>CF_REJECT = $0001;</code>
 +
| &nbsp;
 +
|-
 +
| <code>CF_DEFER = $0002;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Shutdown option''' <code> SD_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|WinSock 2 extension -- manifest constants for shutdown()
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>SD_RECEIVE = GlobalSock.SD_RECEIVE;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>SD_SEND = GlobalSock.SD_SEND;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SD_BOTH = GlobalSock.SD_BOTH;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Socket group''' <code> SG_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|WinSock 2 extension -- data type and manifest constants for socket groups
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>SG_UNCONSTRAINED_GROUP = $01;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>SG_CONSTRAINED_GROUP = $02;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Provider flag''' <code> PFL_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Flag bit definitions for dwProviderFlags */
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>PFL_MULTIPLE_PROTO_ENTRIES = $00000001;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>PFL_RECOMMENDED_PROTO_ENTRY = $00000002;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PFL_HIDDEN = $00000004;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PFL_MATCHES_PROTOCOL_ZERO = $00000008;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Service flag''' <code> XP1_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|&nbsp;Flag bit definitions for dwServiceFlags1 */
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>XP1_CONNECTIONLESS = $00000001;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>XP1_GUARANTEED_DELIVERY = $00000002;</code>
 +
| &nbsp;
 +
|-
 +
| <code>XP1_GUARANTEED_ORDER = $00000004;</code>
 +
| &nbsp;
 +
|-
 +
| <code>XP1_MESSAGE_ORIENTED = $00000008;</code>
 +
| &nbsp;
 +
|-
 +
| <code>XP1_PSEUDO_STREAM = $00000010;</code>
 +
| &nbsp;
 +
|-
 +
| <code>XP1_GRACEFUL_CLOSE = $00000020;</code>
 +
| &nbsp;
 +
|-
 +
| <code>XP1_EXPEDITED_DATA = $00000040;</code>
 +
| &nbsp;
 +
|-
 +
| <code>XP1_CONNECT_DATA = $00000080;</code>
 +
| &nbsp;
 +
|-
 +
| <code>XP1_DISCONNECT_DATA = $00000100;</code>
 +
| &nbsp;
 +
|-
 +
| <code>XP1_SUPPORT_BROADCAST = $00000200;</code>
 +
| &nbsp;
 +
|-
 +
| <code>XP1_SUPPORT_MULTIPOINT = $00000400;</code>
 +
| &nbsp;
 +
|-
 +
| <code>XP1_MULTIPOINT_CONTROL_PLANE = $00000800;</code>
 +
| &nbsp;
 +
|-
 +
| <code>XP1_MULTIPOINT_DATA_PLANE = $00001000;</code>
 +
| &nbsp;
 +
|-
 +
| <code>XP1_QOS_SUPPORTED = $00002000;</code>
 +
| &nbsp;
 +
|-
 +
| <code>XP1_INTERRUPT = $00004000;</code>
 +
| &nbsp;
 +
|-
 +
| <code>XP1_UNI_SEND = $00008000;</code>
 +
| &nbsp;
 +
|-
 +
| <code>XP1_UNI_RECV = $00010000;</code>
 +
| &nbsp;
 +
|-
 +
| <code>XP1_IFS_HANDLES = $00020000;</code>
 +
| &nbsp;
 +
|-
 +
| <code>XP1_PARTIAL_MESSAGE = $00040000;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Join leaf option''' <code> JL_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|WinSock 2 extension -- manifest constants for WSAJoinLeaf()
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>JL_SENDER_ONLY = $01;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>JL_RECEIVER_ONLY = $02;</code>
 +
| &nbsp;
 +
|-
 +
| <code>JL_BOTH = $04;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Socket flag''' <code> WSA_FLAG_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|WinSock 2 extension -- manifest constants for WSASocket()
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>WSA_FLAG_OVERLAPPED = GlobalSock.WSA_FLAG_OVERLAPPED;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>WSA_FLAG_MULTIPOINT_C_ROOT = GlobalSock.WSA_FLAG_MULTIPOINT_C_ROOT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_FLAG_MULTIPOINT_C_LEAF = GlobalSock.WSA_FLAG_MULTIPOINT_C_LEAF;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_FLAG_MULTIPOINT_D_ROOT = GlobalSock.WSA_FLAG_MULTIPOINT_D_ROOT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_FLAG_MULTIPOINT_D_LEAF = GlobalSock.WSA_FLAG_MULTIPOINT_D_LEAF;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Socket IOC option''' <code> IOC_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|WinSock 2 extension -- manifest constants for WSAIoctl()
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>IOC_UNIX = $00000000;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>IOC_WS2 = $08000000;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IOC_PROTOCOL = $10000000;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IOC_VENDOR = $18000000;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''SIO option''' <code> SIO_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>SIO_ASSOCIATE_HANDLE = IOC_IN or IOC_WS2 or 1;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>SIO_ENABLE_CIRCULAR_QUEUEING = IOC_WS2 or 2;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SIO_FIND_ROUTE = IOC_OUT or IOC_WS2 or 3;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SIO_FLUSH = IOC_WS2 or 4;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SIO_GET_BROADCAST_ADDRESS = IOC_OUT or IOC_WS2 or 5;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT or IOC_WS2 or 6;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SIO_GET_QOS = IOC_INOUT or IOC_WS2 or 7;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SIO_GET_GROUP_QOS = IOC_INOUT or IOC_WS2 or 8;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SIO_MULTIPOINT_LOOPBACK = IOC_IN or IOC_WS2 or 9;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SIO_MULTICAST_SCOPE = IOC_IN or IOC_WS2 or 10;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SIO_SET_QOS = IOC_IN or IOC_WS2 or 11;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SIO_SET_GROUP_QOS = IOC_IN or IOC_WS2 or 12;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SIO_TRANSLATE_HANDLE = IOC_INOUT or IOC_WS2 or 13;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''WinSock 2 extension -- manifest constants for SIO_TRANSLATE_HANDLE ioctl''
 +
|-
 +
| <code>TH_NETDEV = $00000001;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TH_TAPI = $00000002;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Name space''' <code> NS_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>NS_ALL = (0);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>NS_SAP = (1);</code>
 +
| &nbsp;
 +
|-
 +
| <code>NS_NDS = (2);</code>
 +
| &nbsp;
 +
|-
 +
| <code>NS_PEER_BROWSE = (3);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>NS_TCPIP_LOCAL = (10);</code>
 +
| &nbsp;
 +
|-
 +
| <code>NS_TCPIP_HOSTS = (11);</code>
 +
| &nbsp;
 +
|-
 +
| <code>NS_DNS = (12);</code>
 +
| &nbsp;
 +
|-
 +
| <code>NS_NETBT = (13);</code>
 +
| &nbsp;
 +
|-
 +
| <code>NS_WINS = (14);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>NS_NBP = (20);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code> NS_MS = (30);</code>
 +
| &nbsp;
 +
|-
 +
| <code>NS_STDA = (31);</code>
 +
| &nbsp;
 +
|-
 +
| <code>NS_NTDS = (32);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>NS_X500 = (40);</code>
 +
| &nbsp;
 +
|-
 +
| <code>NS_NIS = (41);</code>
 +
| &nbsp;
 +
|-
 +
| <code>NS_NISPLUS = (42);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>NS_WRQ = (50);</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Resolution flag''' <code> RES_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Resolution flags for WSAGetAddressByName() Note these are also used by the 1.1 API GetAddressByName, so leave them around.
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>RES_UNUSED_1 = $00000001;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>RES_FLUSH_CACHE = $00000002;</code>
 +
| &nbsp;
 +
|-
 +
| <code>RES_SERVICE = $00000004;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Service type value''' <code> SERVICE_TYPE_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Well known value names for Service Types
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>SERVICE_TYPE_VALUE_IPXPORTA = 'IpxSocket';</code>
 +
| SERVICE_TYPE_VALUE_IPXPORTW : PWideChar = 'IpxSocket';
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>SERVICE_TYPE_VALUE_SAPIDA = 'SapId';</code>
 +
| SERVICE_TYPE_VALUE_SAPIDW : PWideChar = 'SapId';
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>SERVICE_TYPE_VALUE_TCPPORTA = 'TcpPort';</code>
 +
| SERVICE_TYPE_VALUE_TCPPORTW : PWideChar = 'TcpPort';
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>SERVICE_TYPE_VALUE_UDPPORTA = 'UdpPort';</code>
 +
| SERVICE_TYPE_VALUE_UDPPORTW : PWideChar = 'UdpPort';
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>SERVICE_TYPE_VALUE_OBJECTIDA = 'ObjectId';</code>
 +
| SERVICE_TYPE_VALUE_OBJECTIDW : PWideChar = 'ObjectId';
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>SERVICE_TYPE_VALUE_SAPID = SERVICE_TYPE_VALUE_SAPIDA;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SERVICE_TYPE_VALUE_TCPPORT = SERVICE_TYPE_VALUE_TCPPORTA;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SERVICE_TYPE_VALUE_UDPPORT = SERVICE_TYPE_VALUE_UDPPORTA;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SERVICE_TYPE_VALUE_OBJECTID = SERVICE_TYPE_VALUE_OBJECTIDA;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''WinSock 2 extension -- WSABUF and QOS struct, include qos.h to pull in FLOWSPEC and related definitions''
 +
|-
 +
| <code>SERVICETYPE_NOTRAFFIC = $00000000;</code>
 +
| No data in this direction
 +
|-
 +
| <code>SERVICETYPE_BESTEFFORT = $00000001;</code>
 +
| Best Effort
 +
|-
 +
| <code>SERVICETYPE_CONTROLLEDLOAD = $00000002;</code>
 +
| Controlled Load
 +
|-
 +
| <code>SERVICETYPE_GUARANTEED = $00000003;</code>
 +
| Guaranteed
 +
|-
 +
| <code>SERVICETYPE_NETWORK_UNAVAILABLE = $00000004;</code>
 +
| Used to notify change to user
 +
|-
 +
| <code>SERVICETYPE_GENERAL_INFORMATION = $00000005;</code>
 +
| Corresponds to "General Parameters" defined by IntServ
 +
|-
 +
| <code>SERVICETYPE_NOCHANGE = $00000006;</code>
 +
| Used to indicate that the flow spec contains no change from any previous one
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>SERVICE_IMMEDIATE_TRAFFIC_CONTROL = $80000000;</code>
 +
| To turn on immediate traffic control, OR this flag with the ServiceType field in teh FLOWSPEC
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''LUP option''' <code> LUP_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>LUP_DEEP = $0001;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>LUP_CONTAINERS = $0002;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LUP_NOCONTAINERS = $0004;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LUP_NEAREST = $0008;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LUP_RETURN_NAME = $0010;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LUP_RETURN_TYPE = $0020;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LUP_RETURN_VERSION = $0040;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LUP_RETURN_COMMENT = $0080;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LUP_RETURN_ADDR = $0100;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LUP_RETURN_BLOB = $0200;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LUP_RETURN_ALIASES = $0400;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LUP_RETURN_QUERY_STRING = $0800;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LUP_RETURN_ALL = $0FF0;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LUP_RES_SERVICE = $8000;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>LUP_FLUSHCACHE = $1000;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LUP_FLUSHPREVIOUS = $2000;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Address info flag''' <code> AI_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Flags used in "hints" argument to getaddrinfo()
 +
|-
 +
|colspan="2"|Note: Under Linux these values may be different
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>AI_PASSIVE = GlobalSock.AI_PASSIVE;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>AI_CANONNAME = GlobalSock.AI_CANONNAME;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AI_NUMERICHOST = GlobalSock.AI_NUMERICHOST;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AI_NUMERICSERV = GlobalSock.AI_NUMERICSERV;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AI_ALL = GlobalSock.AI_ALL;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AI_ADDRCONFIG = GlobalSock.AI_ADDRCONFIG;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AI_V4MAPPED = GlobalSock.AI_V4MAPPED;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AI_NON_AUTHORITATIVE = GlobalSock.AI_NON_AUTHORITATIVE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AI_SECURE = GlobalSock.AI_SECURE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AI_RETURN_PREFERRED_NAMES = GlobalSock.AI_RETURN_PREFERRED_NAMES;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AI_FQDN = GlobalSock.AI_FQDN;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AI_FILESERVER = GlobalSock.AI_FILESERVER;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Name info flag''' <code> NI_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Flags for getnameinfo()
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>NI_NOFQDN = GlobalSock.NI_NOFQDN;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>NI_NUMERICHOST = GlobalSock.NI_NUMERICHOST;</code>
 +
| &nbsp;
 +
|-
 +
| <code>NI_NAMEREQD = GlobalSock.NI_NAMEREQD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>NI_NUMERICSERV = GlobalSock.NI_NUMERICSERV;</code>
 +
| &nbsp;
 +
|-
 +
| <code>NI_DGRAM = GlobalSock.NI_DGRAM;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>NI_MAXHOST = GlobalSock.NI_MAXHOST;</code>
 +
| &nbsp;
 +
|-
 +
| <code>NI_MAXSERV = GlobalSock.NI_MAXSERV;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
  
 
=== Type definitions ===
 
=== Type definitions ===
 
----
 
----
  
''To be documented''
+
See globalsock.pas
 +
 
 +
=== Class definitions ===
 +
----
 +
 
 +
 
 +
'''Base socket classes'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2Socket|<code>TWinsock2Socket = class(TListObject)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2SocketThread|<code>TWinsock2SocketThread = class(TThreadEx)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2SocketThreads|<code>TWinsock2SocketThreads = class(TObject)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2SocketBuffer|<code>TWinsock2SocketBuffer = class(TObject)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2SocketBuffers|<code>TWinsock2SocketBuffers = class(TObject)</code>]]
 +
|-
 +
|}
 +
 
 +
'''Raw socket (SOCK_RAW) classes'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2RAWSocket|<code>TWinsock2RAWSocket = class(TWinsock2Socket)</code>]]
 +
|-
 +
|}
 +
 
 +
'''Stream socket (SOCK_STREAM) classes'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2TCPSocket|<code>TWinsock2TCPSocket = class(TWinsock2Socket)</code>]]
 +
|-
 +
|}
 +
 
 +
'''Datagram socket (SOCK_DGRAM) classes'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2UDPSocket|<code>TWinsock2UDPSocket = class(TWinsock2Socket)</code>]]
 +
|-
 +
|}
 +
 
 +
'''Raw client classes'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2RAWClient|<code>TWinsock2RAWClient = class(TWinsock2RAWSocket)</code>]]
 +
|-
 +
|}
 +
 
 +
'''Stream client classes'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2TCPClient|<code>TWinsock2TCPClient = class(TWinsock2TCPSocket)</code>]]
 +
|-
 +
|}
 +
 
 +
'''Datagram client classes'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2UDPClient|<code>TWinsock2UDPClient = class(TWinsock2UDPSocket)</code>]]
 +
|-
 +
|}
 +
 
 +
'''Stream server classes'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2TCPServer|<code>TWinsock2TCPServer = class(TWinsock2TCPSocket)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2TCPServerThread|<code>TWinsock2TCPServerThread = class(TWinsock2SocketThread)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2TCPListenerThread|<code>TWinsock2TCPListenerThread = class(TWinsock2SocketThread)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2TCPServerThreads|<code>TWinsock2TCPServerThreads = class(TWinsock2SocketThreads)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2TCPListener|<code>TWinsock2TCPListener = class(TWinsock2TCPSocket)</code>]]
 +
|-
 +
|}
 +
 
 +
'''Datagram server classes'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2UDPServer|<code>TWinsock2UDPServer = class(TWinsock2UDPSocket)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2UDPServerThread|<code>TWinsock2UDPServerThread = class(TWinsock2SocketThread)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2UDPListenerThread|<code>TWinsock2UDPListenerThread = class(TWinsock2SocketThread)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2UDPServerThreads|<code>TWinsock2UDPServerThreads = class(TWinsock2SocketThreads)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2UDPServerBuffer|<code>TWinsock2UDPServerBuffer = class(TWinsock2SocketBuffer)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2UDPServerBuffers|<code>TWinsock2UDPServerBuffers = class(TWinsock2SocketBuffers)</code>]]
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TWinsock2UDPListener|<code>TWinsock2UDPListener = class(TWinsock2UDPSocket)</code>]]
 +
|-
 +
|}
 +
<br />
  
 
=== Public variables ===
 
=== Public variables ===
 
----
 
----
  
''To be documented''
+
''None defined''
  
 
=== Function declarations ===
 
=== Function declarations ===
 
----
 
----
  
''To be documented''
 
  
 +
'''Initialization functions'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">procedure WS2Init;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function WS2Start:Boolean;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function WS2Stop:Boolean;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">procedure WS2AsyncStart(Data:Pointer);</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
 +
'''Winsock2 functions'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function accept( const s: TSocket; addr: PSockAddr; addrlen: PLongint ): TSocket;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Accept an incoming connection attempt on a socket</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function accept( const s: TSocket; addr: PSockAddr; var addrlen: Longint ): TSocket;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Accept an incoming connection attempt on a socket</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function bind( const s: TSocket; addr: PSockAddr; namelen: Longint ): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Associate a local address with a socket</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function bind( const s: TSocket; var addr: TSockAddr; namelen: Longint ): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Associate a local address with a socket</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function closesocket( const s: TSocket ): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Close an existing socket</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function connect( const s: TSocket; name: PSockAddr; namelen: Longint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Establish a connection to a specified socket</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function connect( const s: TSocket; var name: TSockAddr; namelen: Longint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Establish a connection to a specified socket</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function ioctlsocket( const s: TSocket; cmd: Longint; var arg: u_long ): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Control the I/O mode of a socket</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function ioctlsocket( const s: TSocket; cmd: Longint; argp: pu_long ): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Control the I/O mode of a socket</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function getpeername( const s: TSocket; var name: TSockAddr; var namelen: Longint ): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Retrieve the address of the peer to which a socket is connected</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function getsockname( const s: TSocket; var name: TSockAddr; var namelen: Longint ): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Retrieve the local name for a socket</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function getsockopt( const s: TSocket; const level, optname: Longint; optval: PChar; var optlen: Longint ): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Retrieve a socket option</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function getsockopt( const s: TSocket; const level, optname: Longint; optval: Pointer; var optlen: Longint ): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Retrieve a socket option</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function getsockopt( const s: TSocket; const level, optname: Longint; var optval; var optlen: Longint ): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Retrieve a socket option</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function htond(hostdouble: Double): UInt64;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert a double from host byte order to TCP/IP network byte order (which is big-endian)</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function htonf(hostfloat: Single): UInt32;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert a float from host byte order to TCP/IP network byte order (which is big-endian)</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function htonl(hostlong: u_long): u_long;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert a u_long from host byte order to TCP/IP network byte order (which is big-endian)</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information}
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function htonll(hostlonglong: UInt64): UInt64;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert an unsigned int64 from host byte order to TCP/IP network byte order (which is big-endian)</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information}
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function htons(hostshort: u_short): u_short;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert a u_short from host byte order to TCP/IP network byte order (which is big-endian)</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function inet_addr(cp: PChar): u_long;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert a string containing an IPv4 dotted-decimal address into a proper address for the IN_ADDR structure</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Address will be returned in network byte order.
 +
See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function inet_ntoa(inaddr: TInAddr): PChar;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert an (IPv4) Internet network address into an ASCII string in Internet standard dotted-decimal format</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| As per the Winsock specification, the buffer returned by this function is only guaranteed to be valid until the next Winsock function call is made within the same thread. Therefore, the data should be copied before another Winsock call.
 +
Address will be in network byte order. See the Windows Sockets 2 documentation for additional information.
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function listen(s: TSocket; backlog: Longint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Place a socket in a state in which it is listening for incoming connections</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function ntohd(netdouble: UInt64): Double;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert an unsigned int64 from TCP/IP network byte order to host byte order and return a double</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function ntohf(netfloat: UInt32): Single;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert an unsigned int32 from TCP/IP network byte order to host byte order and return a float</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function ntohl(netlong: u_long): u_long;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert a u_long from TCP/IP network byte order to host byte order</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function ntohll(netlonglong: UInt64): UInt64;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert an unsigned nt64 from TCP/IP network byte order to host byte order</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function ntohs(netshort: u_short): u_short;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert a u_short from TCP/IP network byte order to host byte order</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function recv(s: TSocket; var Buf; len, flags: Longint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Receive data from a connected socket or a bound connectionless socket</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function recv(s: TSocket; Buf: PChar; len, flags: Longint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Receive data from a connected socket or a bound connectionless socket</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function recv(s: TSocket; Buf: Pointer; len, flags: Longint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Receive data from a connected socket or a bound connectionless socket</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function recvfrom(s: TSocket; Buf: PChar; len, flags: Longint; from: PSockAddr; fromlen: PLongint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Receive a datagram and store the source address</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function recvfrom(s: TSocket; Buf: Pointer; len, flags: Longint; from: PSockAddr; fromlen: PLongint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Receive a datagram and store the source address</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function recvfrom(s: TSocket; var Buf; len, flags: Longint; var from: TSockAddr; var fromlen: Longint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Receive a datagram and store the source address</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function select(nfds: Longint; readfds, writefds, exceptfds: PFDSet; timeout: PTimeVal): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Determine the status of one or more sockets, waiting if necessary, to perform synchronous I/O</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| All sockets contained by the FDSet must be of the same type.
 +
See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function send(s: TSocket; var Buf; len, flags: Longint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Send data on a connected socket</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function send(s: TSocket; Buf: PChar; len, flags: Longint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Send data on a connected socket</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function send(s: TSocket; Buf: Pointer; len, flags: Longint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Send data on a connected socket</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function sendto(s: TSocket; var Buf; len, flags: Longint; var addrto: TSockAddr; tolen: Longint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Send data to a specific destination</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function sendto(s: TSocket; Buf: PChar; len, flags: Longint; addrto: PSockAddr; tolen: Longint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Send data to a specific destination</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function sendto(s: TSocket; Buf: Pointer; len, flags: Longint; addrto: PSockAddr; tolen: Longint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Send data to a specific destination</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function setsockopt(s: TSocket; level, optname: Longint; const optval; optlen: Longint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set a socket option</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function setsockopt(s: TSocket; level, optname: Longint; optval: PChar; optlen: Longint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set a socket option</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function setsockopt(s: TSocket; level, optname: Longint; optval: Pointer; optlen: Longint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set a socket option</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function shutdown(s: TSocket; how: Longint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Disable sends or receives on a socket</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function socket(af, struct, protocol: Longint): TSocket;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Create a socket that is bound to a specific transport service provider</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function gethostbyaddr(addr: Pointer; len, family: Longint): PHostEnt;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Retrieve the host information corresponding to a network address</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Address will be in network byte order where applicable.
 +
See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function gethostbyname(name: PChar): PHostEnt;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Retrieve network address corresponding to a host name</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function gethostname(name: PChar; len: Longint): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Retrieve the standard host name for the local computer</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function getservbyport(port: Longint; proto: PChar): PServEnt;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Retrieve service information corresponding to a port and protocol</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Port will be in network byte order.
 +
See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function getservbyname(name, proto: PChar): PServEnt;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Retrieve service information corresponding to a service name and protocol</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function getprotobynumber(proto: Longint): PProtoEnt;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Retrieve protocol information corresponding to a protocol number</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function getprotobyname(name: PChar): PProtoEnt;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Retrieve the protocol information corresponding to a protocol name</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function getaddrinfo(pNodeName, pServiceName: PChar; pHints: PAddrInfo; var ppResult: PAddrInfo): LongInt;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' RFC 3493 protocol-independent translation from a host name to an address</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">procedure freeaddrinfo(ai: PAddrInfo);</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Free address information that GetAddrInfo dynamically allocates in TAddrInfo structures</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function getnameinfo(sa: PSockAddr; salen: Integer; host: PChar; hostlen: DWORD; serv: PChar; servlen: DWORD; flags: Integer): Integer;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' RFC 3493 protocol-independent name resolution from an address to a host name and a port number to a service name</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function Gai_StrError(ecode: Longint): PChar;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Return an error message for an error code returned by GetAddrInfo or GetNameInfo</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function WSAStartup(wVersionRequired: word; var WSData: TWSAData): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Initiate use of Winsock 2 by an application</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function WSACleanup: Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Terminate use of Winsock 2 by an application</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">procedure WSASetLastError(iError: Longint); inline;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the error code that can be retrieved through the WSAGetLastError function</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function WSAGetLastError: Longint; inline;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Return the error status for the last Windows Sockets operation that failed</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function __WSAFDIsSet(s: TSocket; var FDSet: TFDSet): BOOL;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Return a value indicating whether a socket is included in a set of socket descriptors</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function inet_pton(Family: Longint; const pszAddrString: PChar; pAddrBuf: Pointer): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Address will be returned in network byte order where applicable.
 +
See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function InetPtonA(Family: Longint; const pszAddrString: PChar; pAddrBuf: Pointer): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert an IPv4 or IPv6 Internet network address in its standard text presentation form into its numeric binary form</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Address will be returned in network byte order where applicable.
 +
See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function InetPtonW(Family: Longint; const pszAddrString: PWideChar; pAddrBuf: Pointer): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert an IPv4 or IPv6 Internet network address in its standard text presentation form into its numeric binary form</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Address will be returned in network byte order where applicable.
 +
See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function inet_ntop(Family: Longint; pAddr: Pointer; pStringBuf: PChar; StringBufSize: Longint): PChar;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert an IPv4 or IPv6 Internet network address into a string in Internet standard format</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Address will be in network byte order where applicable.
 +
See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function InetNtopA(Family: Longint; pAddr: Pointer; pStringBuf: PChar; StringBufSize: Longint): PChar;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert an IPv4 or IPv6 Internet network address into a string in Internet standard format</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Address will be in network byte order where applicable.
 +
See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function InetNtopW(Family: Longint; pAddr: Pointer; pStringBuf: PWideChar; StringBufSize: Longint): PWideChar;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert an IPv4 or IPv6 Internet network address into a string in Internet standard format</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Address will be in network byte order where applicable.
 +
See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function WSAHtonl( s : TSocket; hostlong : u_long; lpnetlong : pu_long ): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert a u_long from host byte order to network byte order</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function WSAHtons( s : TSocket; hostshort : u_short; lpnetshort : pu_short ): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert a u_short from host byte order to network byte order</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function WSANtohl( s : TSocket; netlong : u_long; lphostlong : pu_long ): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert a u_long from network byte order to host byte order</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function WSANtohs( s : TSocket; netshort : u_short; lphostshort : pu_short ): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert a u_short from network byte order to host byte order</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| See the Windows Sockets 2 documentation for additional information
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function WSAMakeSyncReply(Buflen, Error: Word): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function WSAMakeSelectReply(Event, Error: Word): Longint;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function WSAGetAsyncBuflen(Param: Longint): Word;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function WSAGetAsyncError(Param: Longint): Word;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function WSAGetSelectEvent(Param: Longint): Word;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function WSAGetSelectError(Param: Longint): Word;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">procedure FD_CLR(Socket: TSocket; var FDSet: TFDSet);</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function FD_ISSET(Socket: TSocket; var FDSet: TFDSet): Boolean;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">procedure FD_SET(Socket: TSocket; var FDSet: TFDSet);</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">procedure FD_ZERO(var FDSet: TFDSet);</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
 +
'''Winsock2 undocumented functions'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function WsControl(Proto:DWORD; Action:DWORD; pRequestInfo:Pointer; var pcbRequestInfoLen:DWORD; pResponseInfo:Pointer; var pcbResponseInfoLen:DWORD):Integer;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function getnetbyaddr(addr: Pointer; len, Struct: Integer): PNetEnt;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Address will be in network order where applicable
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function getnetbyname(name: PChar): PNetEnt;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
 +
'''Winsock2 enhanced functions'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function WsControlEx(Proto:DWORD; Action:DWORD; pRequestInfo:Pointer; var pcbRequestInfoLen:DWORD; pResponseInfo:Pointer; var pcbResponseInfoLen:DWORD):Integer;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
 +
'''RTL text IO functions'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function SysTextIOReadChar(var ACh:Char; AUserData:Pointer):Boolean;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Handler for platform TextIOReadChar function</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Not intended to be called directly by applications
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function SysTextIOWriteChar(ACh:Char; AUserData:Pointer):Boolean;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Handler for platform TextIOWriteChar function</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Not intended to be called directly by applications
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function SysTextIOWriteBuffer(ABuffer:PChar; ACount:LongInt; AUserData:Pointer):LongInt;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Handler for platform TextIOWriteBuffer function</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| Not intended to be called directly by applications
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
 +
'''Winsock2 helper functions'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function Winsock2RedirectInput(s:TSocket):Boolean;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Redirect standard input to the socket specified by s</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! s
 +
| The socket to redirect input to (or INVALID_SOCKET to stop redirection)
 +
|-
 +
! Return
 +
| True if completed successfully or False if an error occurred
 +
|-
 +
! Note
 +
| Redirects the input of the text file Input which also redirects the input of Read, ReadLn and the standard C library.
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function Winsock2RedirectOutput(s:TSocket):Boolean;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Redirect standard output to the socket specified by s</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! s
 +
| The socket to redirect output to (or INVALID_SOCKET to stop redirection)
 +
|-
 +
! Return
 +
| True if completed successfully or False if an error occurred
 +
|-
 +
! Note
 +
| Redirects the output of the text files Output, ErrOutput, StdOut and StdErr which also redirects the output of Write, WriteLn and the standard C library.
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function Winsock2ErrorToString(AError:LongInt):String;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
  
 
Return to [[Unit_Reference|Unit Reference]]
 
Return to [[Unit_Reference|Unit Reference]]

Latest revision as of 05:46, 31 July 2025

Return to Unit Reference


Description


Ultibo Winsock2 Interface unit

Notes:

  • All BSD/Winsock functions that accept an Address or Port expect them to be in Network byte order.
  • All other functions that take an Address or Port expect them to be in Host byte order.

Constants



Winsock2 specific constants WINSOCK_*
WINSOCK_VERSION = $0202;  
 
WINSOCK_TCP_SERVER_THREAD_NAME = 'TCP Server'; Thread name for TCP server threads
WINSOCK_TCP_SERVER_THREAD_PRIORITY = THREAD_PRIORITY_NORMAL; Thread priority for TCP server threads
 
WINSOCK_TCP_LISTENER_THREAD_NAME = 'TCP Listener'; Thread name for TCP listener threads
WINSOCK_TCP_LISTENER_THREAD_PRIORITY = THREAD_PRIORITY_NORMAL; Thread priority for TCP listener threads
 
WINSOCK_UDP_SERVER_THREAD_NAME = 'UDP Server'; Thread name for UDP server threads
WINSOCK_UDP_SERVER_THREAD_PRIORITY = THREAD_PRIORITY_NORMAL; Thread priority for UDP server threads
 
WINSOCK_UDP_LISTENER_THREAD_NAME = 'UDP Listener'; Thread name for UDP listener threads
WINSOCK_UDP_LISTENER_THREAD_PRIORITY = THREAD_PRIORITY_NORMAL; Thread priority for UDP listener threads
 
FD_SETSIZE = GlobalSock.FD_SETSIZE;  
 
IOCPARM_MASK = GlobalSock.IOCPARM_MASK;  
IOC_VOID = GlobalSock.IOC_VOID;  
IOC_OUT = GlobalSock.IOC_OUT;  
IOC_IN = GlobalSock.IOC_IN;  
IOC_INOUT = GlobalSock.IOC_INOUT;  
 
FIONREAD = GlobalSock.FIONREAD;  
FIONBIO = GlobalSock.FIONBIO;  
FIOASYNC = GlobalSock.FIOASYNC;  
 
SIOCSHIWAT = GlobalSock.SIOCSHIWAT;  
SIOCGHIWAT = GlobalSock.SIOCGHIWAT;  
SIOCSLOWAT = GlobalSock.SIOCSLOWAT;  
SIOCGLOWAT = GlobalSock.SIOCGLOWAT;  
SIOCATMARK = GlobalSock.SIOCATMARK;  
 
IMPLINK_IP = GlobalSock.IMPLINK_IP;  
IMPLINK_LOWEXPER = GlobalSock.IMPLINK_LOWEXPER;  
IMPLINK_HIGHEXPER = GlobalSock.IMPLINK_HIGHEXPER;  
 
TF_DISCONNECT = GlobalSock.TF_DISCONNECT;  
TF_REUSE_SOCKET = GlobalSock.TF_REUSE_SOCKET;  
TF_WRITE_BEHIND = GlobalSock.TF_WRITE_BEHIND;  
 
INET_ADDRSTR_ANY = GlobalSock.INET_ADDRSTR_ANY;  
INET6_ADDRSTR_ANY = GlobalSock.INET6_ADDRSTR_ANY;  
 
INET_ADDRSTR_BROADCAST = GlobalSock.INET_ADDRSTR_BROADCAST;  
 
INET_ADDRSTRLEN = GlobalSock.INET_ADDRSTRLEN;  
INET6_ADDRSTRLEN = GlobalSock.INET6_ADDRSTRLEN;  
 
IN6ADDR_ANY_INIT:TIn6Addr = (u6_addr16: (0, 0, 0, 0, 0, 0, 0, 0));  
IN6ADDR_LOOPBACK_INIT:TIn6Addr = (u6_addr8: (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1));  
 
INADDR_ANY = GlobalSock.INADDR_ANY;  
INADDR_LOOPBACK = GlobalSock.INADDR_LOOPBACK;  
INADDR_BROADCAST = GlobalSock.INADDR_BROADCAST;  
INADDR_NONE = GlobalSock.INADDR_NONE;  
 
IN6ADDR_ANY:TIn6Addr = (u6_addr16: (0, 0, 0, 0, 0, 0, 0, 0));  
IN6ADDR_LOOPBACK:TIn6Addr = (u6_addr8: (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1));  
 
IN6ADDR_NONE:TIn6Addr = (u6_addr16: ($ffff, $ffff, $ffff, $ffff, $ffff, $ffff, $ffff, $ffff));  
 
Level number for (get/set)sockopt() to apply to socket itself
SOL_SOCKET = GlobalSock.SOL_SOCKET;  
 
Maximum queue length specifiable by listen
SOMAXCONN = GlobalSock.SOMAXCONN;  
 
Return flags
RESULT_IS_ALIAS = $0001;  
 
SERVICE_MULTIPLE = $00000001;  
 
BIGENDIAN = $0000;  
LITTLEENDIAN = $0001;  
 
SECURITY_PROTOCOL_NONE = $0000;  
 
This is used instead of -1, since the TSocket type is unsigned
INVALID_SOCKET = GlobalSock.INVALID_SOCKET;  
SOCKET_ERROR = GlobalSock.SOCKET_ERROR;  
 
Define constant based on rfc883, used by gethostbyxxxx() calls
MAXGETHOSTSTRUCT = GlobalSock.MAXGETHOSTSTRUCT;  
 
WSADESCRIPTION_LEN = GlobalSock.WSADESCRIPTION_LEN;  
WSASYS_STATUS_LEN = GlobalSock.WSASYS_STATUS_LEN;  
MAX_PROTOCOL_CHAIN = 7;  
BASE_PROTOCOL = 1;  
LAYERED_PROTOCOL = 0;  
WSAPROTOCOL_LEN = 255;  
 
WSARecvMsg flags
MSG_TRUNC = $0100;  
MSG_CTRUNC = $0200;  
MSG_BCAST = $0400;  
MSG_MCAST = $0800;  
 
Event flag definitions for WSAPoll()
POLLRDNORM = $0100;  
POLLRDBAND = $0200;  
POLLIN = (POLLRDNORM or POLLRDBAND);  
POLLPRI = $0400;  
 
POLLWRNORM = $0010;  
POLLOUT = (POLLWRNORM);  
POLLWRBAND = $0020;  
 
POLLERR = $0001;  
POLLHUP = $0002;  
POLLNVAL = $0004;  


IP protocol IPPROTO_*
IPPROTO_IP = GlobalSock.IPPROTO_IP;  
IPPROTO_ICMP = GlobalSock.IPPROTO_ICMP;  
IPPROTO_IGMP = GlobalSock.IPPROTO_IGMP;  
IPPROTO_GGP = GlobalSock.IPPROTO_GGP;  
IPPROTO_TCP = GlobalSock.IPPROTO_TCP;  
IPPROTO_EGP = GlobalSock.IPPROTO_EGP;  
IPPROTO_PUP = GlobalSock.IPPROTO_PUP;  
IPPROTO_UDP = GlobalSock.IPPROTO_UDP;  
IPPROTO_HMP = GlobalSock.IPPROTO_HMP;  
IPPROTO_IDP = GlobalSock.IPPROTO_IDP;  
IPPROTO_RDP = GlobalSock.IPPROTO_RDP;  
IPPROTO_IPV6 = GlobalSock.IPPROTO_IPV6;  
IPPROTO_ROUTING = GlobalSock.IPPROTO_ROUTING;  
IPPROTO_FRAGMENT = GlobalSock.IPPROTO_FRAGMENT;  
IPPROTO_ICMPV6 = GlobalSock.IPPROTO_ICMPV6;  
IPPROTO_RVD = GlobalSock.IPPROTO_RVD;  
IPPROTO_ND = GlobalSock.IPPROTO_ND;  
IPPROTO_RAW = GlobalSock.IPPROTO_RAW;  
IPPROTO_MAX = GlobalSock.IPPROTO_MAX;  


IP port IPPORT_*
Port/socket numbers: network standard functions
IPPORT_ANY = GlobalSock.IPPORT_ANY;  
IPPORT_ECHO = GlobalSock.IPPORT_ECHO;  
IPPORT_DISCARD = GlobalSock.IPPORT_DISCARD;  
IPPORT_SYSTAT = GlobalSock.IPPORT_SYSTAT;  
IPPORT_DAYTIME = GlobalSock.IPPORT_DAYTIME;  
IPPORT_NETSTAT = GlobalSock.IPPORT_NETSTAT;  
IPPORT_FTP = GlobalSock.IPPORT_FTP;  
IPPORT_TELNET = GlobalSock.IPPORT_TELNET;  
IPPORT_SMTP = GlobalSock.IPPORT_SMTP;  
IPPORT_TIMESERVER = GlobalSock.IPPORT_TIMESERVER;  
IPPORT_NAMESERVER = GlobalSock.IPPORT_NAMESERVER;  
IPPORT_WHOIS = GlobalSock.IPPORT_WHOIS;  
IPPORT_DNS = GlobalSock.IPPORT_DNS;  
IPPORT_MTP = GlobalSock.IPPORT_MTP;  
IPPORT_BOOTPS = GlobalSock.IPPORT_BOOTPS;  
IPPORT_BOOTPC = GlobalSock.IPPORT_BOOTPC;  
 
Port/socket numbers: host specific functions
IPPORT_TFTP = GlobalSock.IPPORT_TFTP;  
IPPORT_RJE = GlobalSock.IPPORT_RJE;  
IPPORT_FINGER = GlobalSock.IPPORT_FINGER;  
IPPORT_TTYLINK = GlobalSock.IPPORT_TTYLINK;  
IPPORT_SUPDUP = GlobalSock.IPPORT_SUPDUP;  
 
UNIX TCP sockets
IPPORT_EXECSERVER = GlobalSock.IPPORT_EXECSERVER;  
IPPORT_LOGINSERVER = GlobalSock.IPPORT_LOGINSERVER;  
IPPORT_CMDSERVER = GlobalSock.IPPORT_CMDSERVER;  
IPPORT_EFSSERVER = GlobalSock.IPPORT_EFSSERVER;  
 
UNIX UDP sockets
IPPORT_BIFFUDP = GlobalSock.IPPORT_BIFFUDP;  
IPPORT_WHOSERVER = GlobalSock.IPPORT_WHOSERVER;  
IPPORT_ROUTESERVER = GlobalSock.IPPORT_ROUTESERVER;  
 
Ports < IPPORT_RESERVED are reserved for privileged processes (e.g. root)
IPPORT_RESERVED = GlobalSock.IPPORT_RESERVED;  


IP option IP_*
Options for use with [gs]etsockopt at the IP level
 
IP_OPTIONS = GlobalSock.IP_OPTIONS;  
IP_MULTICAST_IF = GlobalSock.IP_MULTICAST_IF;  
IP_MULTICAST_TTL = GlobalSock.IP_MULTICAST_TTL;  
IP_MULTICAST_LOOP = GlobalSock.IP_MULTICAST_LOOP;  
IP_ADD_MEMBERSHIP = GlobalSock.IP_ADD_MEMBERSHIP;  
IP_DROP_MEMBERSHIP = GlobalSock.IP_DROP_MEMBERSHIP;  
IP_TTL = GlobalSock.IP_TTL;  
IP_TOS = GlobalSock.IP_TOS;  
IP_DONTFRAGMENT = GlobalSock.IP_DONTFRAGMENT;  
IP_HDRINCL = GlobalSock.IP_HDRINCL;  
 
IP_DEFAULT_MULTICAST_TTL = GlobalSock.IP_DEFAULT_MULTICAST_TTL;  
IP_DEFAULT_MULTICAST_LOOP = GlobalSock.IP_DEFAULT_MULTICAST_LOOP;  
IP_MAX_MEMBERSHIPS = GlobalSock.IP_MAX_MEMBERSHIPS;  


Socket type SOCK_*
SOCK_UNSPEC = GlobalSock.SOCK_UNSPEC;  
SOCK_STREAM = GlobalSock.SOCK_STREAM;  
SOCK_DGRAM = GlobalSock.SOCK_DGRAM;  
SOCK_RAW = GlobalSock.SOCK_RAW;  
SOCK_RDM = GlobalSock.SOCK_RDM;  
SOCK_SEQPACKET = GlobalSock.SOCK_SEQPACKET;  
SOCK_PACKET = GlobalSock.SOCK_PACKET;  


Socket option SO_*
SO_DEBUG = GlobalSock.SO_DEBUG;  
SO_ACCEPTCONN = GlobalSock.SO_ACCEPTCONN;  
SO_REUSEADDR = GlobalSock.SO_REUSEADDR;  
SO_KEEPALIVE = GlobalSock.SO_KEEPALIVE;  
SO_DONTROUTE = GlobalSock.SO_DONTROUTE;  
SO_BROADCAST = GlobalSock.SO_BROADCAST;  
SO_USELOOPBACK = GlobalSock.SO_USELOOPBACK;  
SO_LINGER = GlobalSock.SO_LINGER;  
SO_OOBINLINE = GlobalSock.SO_OOBINLINE;  
 
SO_DONTLINGER = GlobalSock.SO_DONTLINGER;  
SO_EXCLUSIVEADDRUSE = GlobalSock.SO_EXCLUSIVEADDRUSE;  
 
Additional options
SO_SNDBUF = GlobalSock.SO_SNDBUF;  
SO_RCVBUF = GlobalSock.SO_RCVBUF;  
SO_SNDLOWAT = GlobalSock.SO_SNDLOWAT;  
SO_RCVLOWAT = GlobalSock.SO_RCVLOWAT;  
SO_SNDTIMEO = GlobalSock.SO_SNDTIMEO;  
SO_RCVTIMEO = GlobalSock.SO_RCVTIMEO;  
SO_ERROR = GlobalSock.SO_ERROR;  
SO_TYPE = GlobalSock.SO_TYPE;  
SO_CONNTIMEO = GlobalSock.SO_CONNTIMEO;  
 
Options for connect and disconnect data and options. Used only by non-TCP/IP transports such as DECNet, OSI TP4, etc
SO_CONNDATA = GlobalSock.SO_CONNDATA;  
SO_CONNOPT = GlobalSock.SO_CONNOPT;  
SO_DISCDATA = GlobalSock.SO_DISCDATA;  
SO_DISCOPT = GlobalSock.SO_DISCOPT;  
SO_CONNDATALEN = GlobalSock.SO_CONNDATALEN;  
SO_CONNOPTLEN = GlobalSock.SO_CONNOPTLEN;  
SO_DISCDATALEN = GlobalSock.SO_DISCDATALEN;  
SO_DISCOPTLEN = GlobalSock.SO_DISCOPTLEN;  
 
Option for opening sockets for synchronous access
SO_OPENTYPE = GlobalSock.SO_OPENTYPE;  
SO_SYNCHRONOUS_ALERT = GlobalSock.SO_SYNCHRONOUS_ALERT;  
SO_SYNCHRONOUS_NONALERT = GlobalSock.SO_SYNCHRONOUS_NONALERT;  
 
Other NT-specific options
SO_MAXDG = GlobalSock.SO_MAXDG;  
SO_MAXPATHDG = GlobalSock.SO_MAXPATHDG;  
SO_UPDATE_ACCEPT_CONTEXT = GlobalSock.SO_UPDATE_ACCEPT_CONTEXT;  
SO_CONNECT_TIME = GlobalSock.SO_CONNECT_TIME;  


TCP option TCP_*
TCP_NODELAY= GlobalSock.TCP_NODELAY;  
TCP_MAXSEG = GlobalSock.TCP_MAXSEG;  
TCP_NOPUSH = GlobalSock.TCP_NOPUSH;  
TCP_NOOPT = GlobalSock.TCP_NOOPT;  
TCP_BSDURGENT = GlobalSock.TCP_BSDURGENT;  
 
TCP_WSCALE = GlobalSock.TCP_WSCALE;  
TCP_NOSACK = GlobalSock.TCP_NOSACK;  


UDP option UDP_*
UDP_NOCHECKSUM = GlobalSock.UDP_NOCHECKSUM;  


Address family AF_*
AF_UNSPEC = GlobalSock.AF_UNSPEC;  
AF_UNIX = GlobalSock.AF_UNIX;  
AF_INET = GlobalSock.AF_INET;  
AF_IMPLINK = GlobalSock.AF_IMPLINK;  
AF_PUP = GlobalSock.AF_PUP;  
AF_CHAOS = GlobalSock.AF_CHAOS;  
AF_IPX = GlobalSock.AF_IPX;  
AF_NS = GlobalSock.AF_NS;  
AF_ISO = GlobalSock.AF_ISO;  
AF_OSI = GlobalSock.AF_OSI;  
AF_ECMA = GlobalSock.AF_ECMA;  
AF_DATAKIT = GlobalSock.AF_DATAKIT;  
AF_CCITT = GlobalSock.AF_CCITT;  
AF_SNA = GlobalSock.AF_SNA;  
AF_DECnet = GlobalSock.AF_DECnet;  
AF_DLI = GlobalSock.AF_DLI;  
AF_LAT = GlobalSock.AF_LAT;  
AF_HYLINK = GlobalSock.AF_HYLINK;  
AF_APPLETALK = GlobalSock.AF_APPLETALK;  
AF_NETBIOS = GlobalSock.AF_NETBIOS;  
AF_VOICEVIEW = GlobalSock.AF_VOICEVIEW;  
AF_FIREFOX = GlobalSock.AF_FIREFOX;  
AF_UNKNOWN1 = GlobalSock.AF_UNKNOWN1;  
AF_BAN = GlobalSock.AF_BAN;  
AF_ATM = GlobalSock.AF_ATM;  
AF_INET6 = GlobalSock.AF_INET6;  
AF_CLUSTER = GlobalSock.AF_CLUSTER;  
AF_12844 = GlobalSock.AF_12844;  
AF_IRDA = GlobalSock.AF_IRDA;  
AF_NETDES = GlobalSock.AF_NETDES;  
 
AF_MAX = GlobalSock.AF_MAX;  


Protocol family PF_*
PF_UNSPEC = GlobalSock.PF_UNSPEC;  
PF_UNIX = GlobalSock.PF_UNIX;  
PF_INET = GlobalSock.PF_INET;  
PF_IMPLINK = GlobalSock.PF_IMPLINK;  
PF_PUP = GlobalSock.PF_PUP;  
PF_CHAOS = GlobalSock.PF_CHAOS;  
PF_NS = GlobalSock.PF_NS;  
PF_IPX = GlobalSock.PF_IPX;  
PF_ISO = GlobalSock.PF_ISO;  
PF_OSI = GlobalSock.PF_OSI;  
PF_ECMA = GlobalSock.PF_ECMA;  
PF_DATAKIT = GlobalSock.PF_DATAKIT;  
PF_CCITT = GlobalSock.PF_CCITT;  
PF_SNA = GlobalSock.PF_SNA;  
PF_DECnet = GlobalSock.PF_DECnet;  
PF_DLI = GlobalSock.PF_DLI;  
PF_LAT = GlobalSock.PF_LAT;  
PF_HYLINK = GlobalSock.PF_HYLINK;  
PF_APPLETALK = GlobalSock.PF_APPLETALK;  
PF_VOICEVIEW = GlobalSock.PF_VOICEVIEW;  
PF_FIREFOX = GlobalSock.PF_FIREFOX;  
PF_UNKNOWN1 = GlobalSock.PF_UNKNOWN1;  
PF_BAN = GlobalSock.PF_BAN;  
PF_ATM = GlobalSock.PF_ATM;  
PF_INET6 = GlobalSock.PF_INET6;  
PF_CLUSTER = GlobalSock.PF_CLUSTER;  
PF_12844 = GlobalSock.PF_12844;  
PF_IRDA = GlobalSock.PF_IRDA;  
PF_NETDES = GlobalSock.PF_NETDES;  
 
PF_MAX = GlobalSock.PF_MAX;  


Message flag MSG_*
MSG_OOB = GlobalSock.MSG_OOB;  
MSG_PEEK = GlobalSock.MSG_PEEK;  
MSG_DONTROUTE = GlobalSock.MSG_DONTROUTE;  
MSG_WAITALL = GlobalSock.MSG_WAITALL;  
 
MSG_INTERRUPT = GlobalSock.MSG_INTERRUPT;  
MSG_MAXIOVLEN = GlobalSock.MSG_MAXIOVLEN;  
 
MSG_PARTIAL = GlobalSock.MSG_PARTIAL;  


FD option FD_*
WinSock 2 extension -- bit values and indices for FD_XXX network events
 
FD_READ_BIT = 0;  
FD_READ = (1 shl FD_READ_BIT);  
FD_WRITE_BIT = 1;  
FD_WRITE = (1 shl FD_WRITE_BIT);  
FD_OOB_BIT = 2;  
FD_OOB = (1 shl FD_OOB_BIT);  
FD_ACCEPT_BIT = 3;  
FD_ACCEPT = (1 shl FD_ACCEPT_BIT);  
FD_CONNECT_BIT = 4;  
FD_CONNECT = (1 shl FD_CONNECT_BIT);  
FD_CLOSE_BIT = 5;  
FD_CLOSE = (1 shl FD_CLOSE_BIT);  
FD_QOS_BIT = 6;  
FD_QOS = (1 shl FD_QOS_BIT);  
FD_GROUP_QOS_BIT = 7;  
FD_GROUP_QOS = (1 shl FD_GROUP_QOS_BIT);  
FD_MAX_EVENTS = 8;  
FD_ALL_EVENTS = ((1 shl FD_MAX_EVENTS) - 1);  


Socket error WSAE*
All Windows Sockets error constants are biased by WSABASEERR from the "normal"
 
WSABASEERR = GlobalSock.WSABASEERR;  
 
Windows Sockets definitions of regular Microsoft C error constants
WSAEINTR = GlobalSock.WSAEINTR;  
WSAEBADF = GlobalSock.WSAEBADF;  
WSAEACCES = GlobalSock.WSAEACCES;  
WSAEFAULT = GlobalSock.WSAEFAULT;  
WSAEINVAL = GlobalSock.WSAEINVAL;  
WSAEMFILE = GlobalSock.WSAEMFILE;  
 
Windows Sockets definitions of regular Berkeley error constants
WSAEWOULDBLOCK = GlobalSock.WSAEWOULDBLOCK;  
WSAEINPROGRESS = GlobalSock.WSAEINPROGRESS;  
WSAEALREADY = GlobalSock.WSAEALREADY;  
WSAENOTSOCK = GlobalSock.WSAENOTSOCK;  
WSAEDESTADDRREQ = GlobalSock.WSAEDESTADDRREQ;  
WSAEMSGSIZE = GlobalSock.WSAEMSGSIZE;  
WSAEPROTOTYPE = GlobalSock.WSAEPROTOTYPE;  
WSAENOPROTOOPT = GlobalSock.WSAENOPROTOOPT;  
WSAEPROTONOSUPPORT = GlobalSock.WSAEPROTONOSUPPORT;  
WSAESOCKTNOSUPPORT = GlobalSock.WSAESOCKTNOSUPPORT;  
WSAEOPNOTSUPP = GlobalSock.WSAEOPNOTSUPP;  
WSAEPFNOSUPPORT = GlobalSock.WSAEPFNOSUPPORT;  
WSAEAFNOSUPPORT = GlobalSock.WSAEAFNOSUPPORT;  
WSAEADDRINUSE = GlobalSock.WSAEADDRINUSE;  
WSAEADDRNOTAVAIL = GlobalSock.WSAEADDRNOTAVAIL;  
WSAENETDOWN = GlobalSock.WSAENETDOWN;  
WSAENETUNREACH = GlobalSock.WSAENETUNREACH;  
WSAENETRESET = GlobalSock.WSAENETRESET;  
WSAECONNABORTED = GlobalSock.WSAECONNABORTED;  
WSAECONNRESET = GlobalSock.WSAECONNRESET;  
WSAENOBUFS = GlobalSock.WSAENOBUFS;  
WSAEISCONN = GlobalSock.WSAEISCONN;  
WSAENOTCONN = GlobalSock.WSAENOTCONN;  
WSAESHUTDOWN = GlobalSock.WSAESHUTDOWN;  
WSAETOOMANYREFS = GlobalSock.WSAETOOMANYREFS;  
WSAETIMEDOUT = GlobalSock.WSAETIMEDOUT;  
WSAECONNREFUSED = GlobalSock.WSAECONNREFUSED;  
WSAELOOP = GlobalSock.WSAELOOP;  
WSAENAMETOOLONG = GlobalSock.WSAENAMETOOLONG;  
WSAEHOSTDOWN = GlobalSock.WSAEHOSTDOWN;  
WSAEHOSTUNREACH = GlobalSock.WSAEHOSTUNREACH;  
WSAENOTEMPTY = GlobalSock.WSAENOTEMPTY;  
WSAEPROCLIM = GlobalSock.WSAEPROCLIM;  
WSAEUSERS = GlobalSock.WSAEUSERS;  
WSAEDQUOT = GlobalSock.WSAEDQUOT;  
WSAESTALE = GlobalSock.WSAESTALE;  
WSAEREMOTE = GlobalSock.WSAEREMOTE;  
 
WSAEDISCON = GlobalSock.WSAEDISCON;  
 
Extended Windows Sockets error constant definitions
WSASYSNOTREADY = GlobalSock.WSASYSNOTREADY;  
WSAVERNOTSUPPORTED = GlobalSock.WSAVERNOTSUPPORTED;  
WSANOTINITIALISED = GlobalSock.WSANOTINITIALISED;  
 
WSAENOMORE = GlobalSock.WSAENOMORE;  
WSAECANCELLED = GlobalSock.WSAECANCELLED;  
WSAEINVALIDPROCTABLE = GlobalSock.WSAEINVALIDPROCTABLE;  
WSAEINVALIDPROVIDER = GlobalSock.WSAEINVALIDPROVIDER;  
WSAEPROVIDERFAILEDINIT = GlobalSock.WSAEPROVIDERFAILEDINIT;  
WSASYSCALLFAILURE = GlobalSock.WSASYSCALLFAILURE;  
WSASERVICE_NOT_FOUND = GlobalSock.WSASERVICE_NOT_FOUND;  
WSATYPE_NOT_FOUND = GlobalSock.WSATYPE_NOT_FOUND;  
WSA_E_NO_MORE = GlobalSock.WSA_E_NO_MORE;  
WSA_E_CANCELLED = GlobalSock.WSA_E_CANCELLED;  
WSAEREFUSED = GlobalSock.WSAEREFUSED;  
 
Error return codes from gethostbyname() and gethostbyaddr() (when using the resolver). Note that these errors are retrieved via WSAGetLastError() and must therefore follow the rules for avoiding clashes with error numbers from specific implementations or language run-time systems. For this reason the codes are based at WSABASEERR+1001. Note also that [WSA]NO_ADDRESS is defined only for compatibility purposes.
 
Authoritative Answer: Host not found
WSAHOST_NOT_FOUND = GlobalSock.WSAHOST_NOT_FOUND;  
HOST_NOT_FOUND = GlobalSock.HOST_NOT_FOUND;  
 
Non-Authoritative: Host not found, or SERVERFAIL
WSATRY_AGAIN = GlobalSock.WSATRY_AGAIN;  
TRY_AGAIN = GlobalSock.TRY_AGAIN;  
 
Non recoverable errors, FORMERR, REFUSED, NOTIMP
WSANO_RECOVERY = GlobalSock.WSANO_RECOVERY;  
NO_RECOVERY = GlobalSock.NO_RECOVERY;  
 
Valid name, no data record of requested type
WSANO_DATA = GlobalSock.WSANO_DATA;  
NO_DATA = GlobalSock.NO_DATA;  
 
no address, look for MX record
WSANO_ADDRESS = GlobalSock.WSANO_ADDRESS;  
NO_ADDRESS = GlobalSock.NO_ADDRESS;  
 
WinSock 2 extension -- new error codes and type definition
WSA_IO_PENDING = GlobalSock.WSA_IO_PENDING;  
WSA_IO_INCOMPLETE = GlobalSock.WSA_IO_INCOMPLETE;  
WSA_INVALID_HANDLE = GlobalSock.WSA_INVALID_HANDLE;  
WSA_INVALID_PARAMETER = GlobalSock.WSA_INVALID_PARAMETER;  
WSA_NOT_ENOUGH_MEMORY = GlobalSock.WSA_NOT_ENOUGH_MEMORY;  
WSA_OPERATION_ABORTED = GlobalSock.WSA_OPERATION_ABORTED;  
WSA_INVALID_EVENT = GlobalSock.WSA_INVALID_EVENT;  
WSA_MAXIMUM_WAIT_EVENTS = GlobalSock.WSA_MAXIMUM_WAIT_EVENTS;  
WSA_WAIT_FAILED = GlobalSock.WSA_WAIT_FAILED;  
WSA_WAIT_EVENT_0 = GlobalSock.WSA_WAIT_EVENT_0;  
WSA_WAIT_IO_COMPLETION = GlobalSock.WSA_WAIT_IO_COMPLETION;  
WSA_WAIT_TIMEOUT = GlobalSock.WSA_WAIT_TIMEOUT;  
WSA_INFINITE = GlobalSock.WSA_INFINITE;  
 
Windows Sockets errors redefined as regular Berkeley error constants. These are commented out in Windows NT to avoid conflicts with errno.h. Use the WSA constants instead.
EWOULDBLOCK = GlobalSock.EWOULDBLOCK;  
EINPROGRESS = GlobalSock.EINPROGRESS;  
EALREADY = GlobalSock.EALREADY;  
ENOTSOCK = GlobalSock.ENOTSOCK;  
EDESTADDRREQ = GlobalSock.EDESTADDRREQ;  
EMSGSIZE = GlobalSock.EMSGSIZE;  
EPROTOTYPE = GlobalSock.EPROTOTYPE;  
ENOPROTOOPT = GlobalSock.ENOPROTOOPT;  
EPROTONOSUPPORT = GlobalSock.EPROTONOSUPPORT;  
ESOCKTNOSUPPORT = GlobalSock.ESOCKTNOSUPPORT;  
EOPNOTSUPP = GlobalSock.EOPNOTSUPP;  
EPFNOSUPPORT = GlobalSock.EPFNOSUPPORT;  
EAFNOSUPPORT = GlobalSock.EAFNOSUPPORT;  
EADDRINUSE = GlobalSock.EADDRINUSE;  
EADDRNOTAVAIL = GlobalSock.EADDRNOTAVAIL;  
ENETDOWN = GlobalSock.ENETDOWN;  
ENETUNREACH = GlobalSock.ENETUNREACH;  
ENETRESET = GlobalSock.ENETRESET;  
ECONNABORTED = GlobalSock.ECONNABORTED;  
ECONNRESET = GlobalSock.ECONNRESET;  
ENOBUFS = GlobalSock.ENOBUFS;  
EISCONN = GlobalSock.EISCONN;  
ENOTCONN = GlobalSock.ENOTCONN;  
ESHUTDOWN = GlobalSock.ESHUTDOWN;  
ETOOMANYREFS = GlobalSock.ETOOMANYREFS;  
ETIMEDOUT = GlobalSock.ETIMEDOUT;  
ECONNREFUSED = GlobalSock.ECONNREFUSED;  
ELOOP = GlobalSock.ELOOP;  
ENAMETOOLONG = GlobalSock.ENAMETOOLONG;  
EHOSTDOWN = GlobalSock.EHOSTDOWN;  
EHOSTUNREACH = GlobalSock.EHOSTUNREACH;  
ENOTEMPTY = GlobalSock.ENOTEMPTY;  
EPROCLIM = GlobalSock.EPROCLIM;  
EUSERS = GlobalSock.EUSERS;  
EDQUOT = GlobalSock.EDQUOT;  
ESTALE = GlobalSock.ESTALE;  
EREMOTE = GlobalSock.EREMOTE;  
 
ENOTREADY = GlobalSock.ENOTREADY;  
EVERNOTSUPPORTED = GlobalSock.EVERNOTSUPPORTED;  
ENOTINITIALISED = GlobalSock.ENOTINITIALISED;  
 
Error codes from getaddrinfo()
EAI_AGAIN = GlobalSock.EAI_AGAIN;  
EAI_BADFLAGS = GlobalSock.EAI_BADFLAGS;  
EAI_FAIL = GlobalSock.EAI_FAIL;  
EAI_FAMILY = GlobalSock.EAI_FAMILY;  
EAI_MEMORY = GlobalSock.EAI_MEMORY;  
EAI_NODATA = GlobalSock.EAI_NODATA;  
EAI_NONAME = GlobalSock.EAI_NONAME;  
EAI_SERVICE = GlobalSock.EAI_SERVICE;  
EAI_SOCKTYPE = GlobalSock.EAI_SOCKTYPE;  
 
EAI_NODATA = GlobalSock.EAI_NODATA;  


Condition function value CF_*
WinSock 2 extension -- manifest constants for return values of the condition function
 
CF_ACCEPT = $0000;  
CF_REJECT = $0001;  
CF_DEFER = $0002;  


Shutdown option SD_*
WinSock 2 extension -- manifest constants for shutdown()
 
SD_RECEIVE = GlobalSock.SD_RECEIVE;  
SD_SEND = GlobalSock.SD_SEND;  
SD_BOTH = GlobalSock.SD_BOTH;  


Socket group SG_*
WinSock 2 extension -- data type and manifest constants for socket groups
 
SG_UNCONSTRAINED_GROUP = $01;  
SG_CONSTRAINED_GROUP = $02;  


Provider flag PFL_*
Flag bit definitions for dwProviderFlags */
 
PFL_MULTIPLE_PROTO_ENTRIES = $00000001;  
PFL_RECOMMENDED_PROTO_ENTRY = $00000002;  
PFL_HIDDEN = $00000004;  
PFL_MATCHES_PROTOCOL_ZERO = $00000008;  


Service flag XP1_*
 Flag bit definitions for dwServiceFlags1 */
 
XP1_CONNECTIONLESS = $00000001;  
XP1_GUARANTEED_DELIVERY = $00000002;  
XP1_GUARANTEED_ORDER = $00000004;  
XP1_MESSAGE_ORIENTED = $00000008;  
XP1_PSEUDO_STREAM = $00000010;  
XP1_GRACEFUL_CLOSE = $00000020;  
XP1_EXPEDITED_DATA = $00000040;  
XP1_CONNECT_DATA = $00000080;  
XP1_DISCONNECT_DATA = $00000100;  
XP1_SUPPORT_BROADCAST = $00000200;  
XP1_SUPPORT_MULTIPOINT = $00000400;  
XP1_MULTIPOINT_CONTROL_PLANE = $00000800;  
XP1_MULTIPOINT_DATA_PLANE = $00001000;  
XP1_QOS_SUPPORTED = $00002000;  
XP1_INTERRUPT = $00004000;  
XP1_UNI_SEND = $00008000;  
XP1_UNI_RECV = $00010000;  
XP1_IFS_HANDLES = $00020000;  
XP1_PARTIAL_MESSAGE = $00040000;  


Join leaf option JL_*
WinSock 2 extension -- manifest constants for WSAJoinLeaf()
 
JL_SENDER_ONLY = $01;  
JL_RECEIVER_ONLY = $02;  
JL_BOTH = $04;  


Socket flag WSA_FLAG_*
WinSock 2 extension -- manifest constants for WSASocket()
 
WSA_FLAG_OVERLAPPED = GlobalSock.WSA_FLAG_OVERLAPPED;  
WSA_FLAG_MULTIPOINT_C_ROOT = GlobalSock.WSA_FLAG_MULTIPOINT_C_ROOT;  
WSA_FLAG_MULTIPOINT_C_LEAF = GlobalSock.WSA_FLAG_MULTIPOINT_C_LEAF;  
WSA_FLAG_MULTIPOINT_D_ROOT = GlobalSock.WSA_FLAG_MULTIPOINT_D_ROOT;  
WSA_FLAG_MULTIPOINT_D_LEAF = GlobalSock.WSA_FLAG_MULTIPOINT_D_LEAF;  


Socket IOC option IOC_*
WinSock 2 extension -- manifest constants for WSAIoctl()
 
IOC_UNIX = $00000000;  
IOC_WS2 = $08000000;  
IOC_PROTOCOL = $10000000;  
IOC_VENDOR = $18000000;  


SIO option SIO_*
SIO_ASSOCIATE_HANDLE = IOC_IN or IOC_WS2 or 1;  
SIO_ENABLE_CIRCULAR_QUEUEING = IOC_WS2 or 2;  
SIO_FIND_ROUTE = IOC_OUT or IOC_WS2 or 3;  
SIO_FLUSH = IOC_WS2 or 4;  
SIO_GET_BROADCAST_ADDRESS = IOC_OUT or IOC_WS2 or 5;  
SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT or IOC_WS2 or 6;  
SIO_GET_QOS = IOC_INOUT or IOC_WS2 or 7;  
SIO_GET_GROUP_QOS = IOC_INOUT or IOC_WS2 or 8;  
SIO_MULTIPOINT_LOOPBACK = IOC_IN or IOC_WS2 or 9;  
SIO_MULTICAST_SCOPE = IOC_IN or IOC_WS2 or 10;  
SIO_SET_QOS = IOC_IN or IOC_WS2 or 11;  
SIO_SET_GROUP_QOS = IOC_IN or IOC_WS2 or 12;  
SIO_TRANSLATE_HANDLE = IOC_INOUT or IOC_WS2 or 13;  
 
WinSock 2 extension -- manifest constants for SIO_TRANSLATE_HANDLE ioctl
TH_NETDEV = $00000001;  
TH_TAPI = $00000002;  


Name space NS_*
NS_ALL = (0);  
 
NS_SAP = (1);  
NS_NDS = (2);  
NS_PEER_BROWSE = (3);  
 
NS_TCPIP_LOCAL = (10);  
NS_TCPIP_HOSTS = (11);  
NS_DNS = (12);  
NS_NETBT = (13);  
NS_WINS = (14);  
 
NS_NBP = (20);  
 
NS_MS = (30);  
NS_STDA = (31);  
NS_NTDS = (32);  
 
NS_X500 = (40);  
NS_NIS = (41);  
NS_NISPLUS = (42);  
 
NS_WRQ = (50);  


Resolution flag RES_*
Resolution flags for WSAGetAddressByName() Note these are also used by the 1.1 API GetAddressByName, so leave them around.
 
RES_UNUSED_1 = $00000001;  
RES_FLUSH_CACHE = $00000002;  
RES_SERVICE = $00000004;  


Service type value SERVICE_TYPE_*
Well known value names for Service Types
 
SERVICE_TYPE_VALUE_IPXPORTA = 'IpxSocket'; SERVICE_TYPE_VALUE_IPXPORTW : PWideChar = 'IpxSocket';
 
SERVICE_TYPE_VALUE_SAPIDA = 'SapId'; SERVICE_TYPE_VALUE_SAPIDW : PWideChar = 'SapId';
 
SERVICE_TYPE_VALUE_TCPPORTA = 'TcpPort'; SERVICE_TYPE_VALUE_TCPPORTW : PWideChar = 'TcpPort';
 
SERVICE_TYPE_VALUE_UDPPORTA = 'UdpPort'; SERVICE_TYPE_VALUE_UDPPORTW : PWideChar = 'UdpPort';
 
SERVICE_TYPE_VALUE_OBJECTIDA = 'ObjectId'; SERVICE_TYPE_VALUE_OBJECTIDW : PWideChar = 'ObjectId';
 
SERVICE_TYPE_VALUE_SAPID = SERVICE_TYPE_VALUE_SAPIDA;  
SERVICE_TYPE_VALUE_TCPPORT = SERVICE_TYPE_VALUE_TCPPORTA;  
SERVICE_TYPE_VALUE_UDPPORT = SERVICE_TYPE_VALUE_UDPPORTA;  
SERVICE_TYPE_VALUE_OBJECTID = SERVICE_TYPE_VALUE_OBJECTIDA;  
 
WinSock 2 extension -- WSABUF and QOS struct, include qos.h to pull in FLOWSPEC and related definitions
SERVICETYPE_NOTRAFFIC = $00000000; No data in this direction
SERVICETYPE_BESTEFFORT = $00000001; Best Effort
SERVICETYPE_CONTROLLEDLOAD = $00000002; Controlled Load
SERVICETYPE_GUARANTEED = $00000003; Guaranteed
SERVICETYPE_NETWORK_UNAVAILABLE = $00000004; Used to notify change to user
SERVICETYPE_GENERAL_INFORMATION = $00000005; Corresponds to "General Parameters" defined by IntServ
SERVICETYPE_NOCHANGE = $00000006; Used to indicate that the flow spec contains no change from any previous one
 
SERVICE_IMMEDIATE_TRAFFIC_CONTROL = $80000000; To turn on immediate traffic control, OR this flag with the ServiceType field in teh FLOWSPEC


LUP option LUP_*
LUP_DEEP = $0001;  
LUP_CONTAINERS = $0002;  
LUP_NOCONTAINERS = $0004;  
LUP_NEAREST = $0008;  
LUP_RETURN_NAME = $0010;  
LUP_RETURN_TYPE = $0020;  
LUP_RETURN_VERSION = $0040;  
LUP_RETURN_COMMENT = $0080;  
LUP_RETURN_ADDR = $0100;  
LUP_RETURN_BLOB = $0200;  
LUP_RETURN_ALIASES = $0400;  
LUP_RETURN_QUERY_STRING = $0800;  
LUP_RETURN_ALL = $0FF0;  
LUP_RES_SERVICE = $8000;  
 
LUP_FLUSHCACHE = $1000;  
LUP_FLUSHPREVIOUS = $2000;  


Address info flag AI_*
Flags used in "hints" argument to getaddrinfo()
Note: Under Linux these values may be different
 
AI_PASSIVE = GlobalSock.AI_PASSIVE;  
AI_CANONNAME = GlobalSock.AI_CANONNAME;  
AI_NUMERICHOST = GlobalSock.AI_NUMERICHOST;  
AI_NUMERICSERV = GlobalSock.AI_NUMERICSERV;  
AI_ALL = GlobalSock.AI_ALL;  
AI_ADDRCONFIG = GlobalSock.AI_ADDRCONFIG;  
AI_V4MAPPED = GlobalSock.AI_V4MAPPED;  
AI_NON_AUTHORITATIVE = GlobalSock.AI_NON_AUTHORITATIVE;  
AI_SECURE = GlobalSock.AI_SECURE;  
AI_RETURN_PREFERRED_NAMES = GlobalSock.AI_RETURN_PREFERRED_NAMES;  
AI_FQDN = GlobalSock.AI_FQDN;  
AI_FILESERVER = GlobalSock.AI_FILESERVER;  


Name info flag NI_*
Flags for getnameinfo()
 
NI_NOFQDN = GlobalSock.NI_NOFQDN;  
NI_NUMERICHOST = GlobalSock.NI_NUMERICHOST;  
NI_NAMEREQD = GlobalSock.NI_NAMEREQD;  
NI_NUMERICSERV = GlobalSock.NI_NUMERICSERV;  
NI_DGRAM = GlobalSock.NI_DGRAM;  
 
NI_MAXHOST = GlobalSock.NI_MAXHOST;  
NI_MAXSERV = GlobalSock.NI_MAXSERV;  


Type definitions


See globalsock.pas

Class definitions



Base socket classes

TWinsock2Socket = class(TListObject)
TWinsock2SocketThread = class(TThreadEx)
TWinsock2SocketThreads = class(TObject)
TWinsock2SocketBuffer = class(TObject)
TWinsock2SocketBuffers = class(TObject)

Raw socket (SOCK_RAW) classes

TWinsock2RAWSocket = class(TWinsock2Socket)

Stream socket (SOCK_STREAM) classes

TWinsock2TCPSocket = class(TWinsock2Socket)

Datagram socket (SOCK_DGRAM) classes

TWinsock2UDPSocket = class(TWinsock2Socket)

Raw client classes

TWinsock2RAWClient = class(TWinsock2RAWSocket)

Stream client classes

TWinsock2TCPClient = class(TWinsock2TCPSocket)

Datagram client classes

TWinsock2UDPClient = class(TWinsock2UDPSocket)

Stream server classes

TWinsock2TCPServer = class(TWinsock2TCPSocket)
TWinsock2TCPServerThread = class(TWinsock2SocketThread)
TWinsock2TCPListenerThread = class(TWinsock2SocketThread)
TWinsock2TCPServerThreads = class(TWinsock2SocketThreads)
TWinsock2TCPListener = class(TWinsock2TCPSocket)

Datagram server classes

TWinsock2UDPServer = class(TWinsock2UDPSocket)
TWinsock2UDPServerThread = class(TWinsock2SocketThread)
TWinsock2UDPListenerThread = class(TWinsock2SocketThread)
TWinsock2UDPServerThreads = class(TWinsock2SocketThreads)
TWinsock2UDPServerBuffer = class(TWinsock2SocketBuffer)
TWinsock2UDPServerBuffers = class(TWinsock2SocketBuffers)
TWinsock2UDPListener = class(TWinsock2UDPSocket)


Public variables


None defined

Function declarations



Initialization functions

procedure WS2Init;
Description: To be documented
Note None documented


function WS2Start:Boolean;
Description: To be documented
Note None documented


function WS2Stop:Boolean;
Description: To be documented
Note None documented


procedure WS2AsyncStart(Data:Pointer);
Description: To be documented
Note None documented


Winsock2 functions

function accept( const s: TSocket; addr: PSockAddr; addrlen: PLongint ): TSocket;
Description: Accept an incoming connection attempt on a socket
Note See the Windows Sockets 2 documentation for additional information


function accept( const s: TSocket; addr: PSockAddr; var addrlen: Longint ): TSocket;
Description: Accept an incoming connection attempt on a socket
Note See the Windows Sockets 2 documentation for additional information


function bind( const s: TSocket; addr: PSockAddr; namelen: Longint ): Longint;
Description: Associate a local address with a socket
Note See the Windows Sockets 2 documentation for additional information


function bind( const s: TSocket; var addr: TSockAddr; namelen: Longint ): Longint;
Description: Associate a local address with a socket
Note See the Windows Sockets 2 documentation for additional information


function closesocket( const s: TSocket ): Longint;
Description: Close an existing socket
Note See the Windows Sockets 2 documentation for additional information


function connect( const s: TSocket; name: PSockAddr; namelen: Longint): Longint;
Description: Establish a connection to a specified socket
Note See the Windows Sockets 2 documentation for additional information


function connect( const s: TSocket; var name: TSockAddr; namelen: Longint): Longint;
Description: Establish a connection to a specified socket
Note See the Windows Sockets 2 documentation for additional information


function ioctlsocket( const s: TSocket; cmd: Longint; var arg: u_long ): Longint;
Description: Control the I/O mode of a socket
Note See the Windows Sockets 2 documentation for additional information


function ioctlsocket( const s: TSocket; cmd: Longint; argp: pu_long ): Longint;
Description: Control the I/O mode of a socket
Note See the Windows Sockets 2 documentation for additional information


function getpeername( const s: TSocket; var name: TSockAddr; var namelen: Longint ): Longint;
Description: Retrieve the address of the peer to which a socket is connected
Note See the Windows Sockets 2 documentation for additional information


function getsockname( const s: TSocket; var name: TSockAddr; var namelen: Longint ): Longint;
Description: Retrieve the local name for a socket
Note See the Windows Sockets 2 documentation for additional information


function getsockopt( const s: TSocket; const level, optname: Longint; optval: PChar; var optlen: Longint ): Longint;
Description: Retrieve a socket option
Note See the Windows Sockets 2 documentation for additional information


function getsockopt( const s: TSocket; const level, optname: Longint; optval: Pointer; var optlen: Longint ): Longint;
Description: Retrieve a socket option
Note See the Windows Sockets 2 documentation for additional information


function getsockopt( const s: TSocket; const level, optname: Longint; var optval; var optlen: Longint ): Longint;
Description: Retrieve a socket option
Note See the Windows Sockets 2 documentation for additional information


function htond(hostdouble: Double): UInt64;
Description: Convert a double from host byte order to TCP/IP network byte order (which is big-endian)
Note See the Windows Sockets 2 documentation for additional information


function htonf(hostfloat: Single): UInt32;
Description: Convert a float from host byte order to TCP/IP network byte order (which is big-endian)
Note See the Windows Sockets 2 documentation for additional information


function htonl(hostlong: u_long): u_long;
Description: Convert a u_long from host byte order to TCP/IP network byte order (which is big-endian)
Note See the Windows Sockets 2 documentation for additional information}


function htonll(hostlonglong: UInt64): UInt64;
Description: Convert an unsigned int64 from host byte order to TCP/IP network byte order (which is big-endian)
Note See the Windows Sockets 2 documentation for additional information}


function htons(hostshort: u_short): u_short;
Description: Convert a u_short from host byte order to TCP/IP network byte order (which is big-endian)
Note See the Windows Sockets 2 documentation for additional information


function inet_addr(cp: PChar): u_long;
Description: Convert a string containing an IPv4 dotted-decimal address into a proper address for the IN_ADDR structure
Note Address will be returned in network byte order.

See the Windows Sockets 2 documentation for additional information


function inet_ntoa(inaddr: TInAddr): PChar;
Description: Convert an (IPv4) Internet network address into an ASCII string in Internet standard dotted-decimal format
Note As per the Winsock specification, the buffer returned by this function is only guaranteed to be valid until the next Winsock function call is made within the same thread. Therefore, the data should be copied before another Winsock call.

Address will be in network byte order. See the Windows Sockets 2 documentation for additional information.


function listen(s: TSocket; backlog: Longint): Longint;
Description: Place a socket in a state in which it is listening for incoming connections
Note See the Windows Sockets 2 documentation for additional information


function ntohd(netdouble: UInt64): Double;
Description: Convert an unsigned int64 from TCP/IP network byte order to host byte order and return a double
Note See the Windows Sockets 2 documentation for additional information


function ntohf(netfloat: UInt32): Single;
Description: Convert an unsigned int32 from TCP/IP network byte order to host byte order and return a float
Note See the Windows Sockets 2 documentation for additional information


function ntohl(netlong: u_long): u_long;
Description: Convert a u_long from TCP/IP network byte order to host byte order
Note See the Windows Sockets 2 documentation for additional information


function ntohll(netlonglong: UInt64): UInt64;
Description: Convert an unsigned nt64 from TCP/IP network byte order to host byte order
Note See the Windows Sockets 2 documentation for additional information


function ntohs(netshort: u_short): u_short;
Description: Convert a u_short from TCP/IP network byte order to host byte order
Note See the Windows Sockets 2 documentation for additional information


function recv(s: TSocket; var Buf; len, flags: Longint): Longint;
Description: Receive data from a connected socket or a bound connectionless socket
Note See the Windows Sockets 2 documentation for additional information


function recv(s: TSocket; Buf: PChar; len, flags: Longint): Longint;
Description: Receive data from a connected socket or a bound connectionless socket
Note See the Windows Sockets 2 documentation for additional information


function recv(s: TSocket; Buf: Pointer; len, flags: Longint): Longint;
Description: Receive data from a connected socket or a bound connectionless socket
Note See the Windows Sockets 2 documentation for additional information


function recvfrom(s: TSocket; Buf: PChar; len, flags: Longint; from: PSockAddr; fromlen: PLongint): Longint;
Description: Receive a datagram and store the source address
Note See the Windows Sockets 2 documentation for additional information


function recvfrom(s: TSocket; Buf: Pointer; len, flags: Longint; from: PSockAddr; fromlen: PLongint): Longint;
Description: Receive a datagram and store the source address
Note See the Windows Sockets 2 documentation for additional information


function recvfrom(s: TSocket; var Buf; len, flags: Longint; var from: TSockAddr; var fromlen: Longint): Longint;
Description: Receive a datagram and store the source address
Note See the Windows Sockets 2 documentation for additional information


function select(nfds: Longint; readfds, writefds, exceptfds: PFDSet; timeout: PTimeVal): Longint;
Description: Determine the status of one or more sockets, waiting if necessary, to perform synchronous I/O
Note All sockets contained by the FDSet must be of the same type.

See the Windows Sockets 2 documentation for additional information


function send(s: TSocket; var Buf; len, flags: Longint): Longint;
Description: Send data on a connected socket
Note See the Windows Sockets 2 documentation for additional information


function send(s: TSocket; Buf: PChar; len, flags: Longint): Longint;
Description: Send data on a connected socket
Note See the Windows Sockets 2 documentation for additional information


function send(s: TSocket; Buf: Pointer; len, flags: Longint): Longint;
Description: Send data on a connected socket
Note See the Windows Sockets 2 documentation for additional information


function sendto(s: TSocket; var Buf; len, flags: Longint; var addrto: TSockAddr; tolen: Longint): Longint;
Description: Send data to a specific destination
Note See the Windows Sockets 2 documentation for additional information


function sendto(s: TSocket; Buf: PChar; len, flags: Longint; addrto: PSockAddr; tolen: Longint): Longint;
Description: Send data to a specific destination
Note See the Windows Sockets 2 documentation for additional information


function sendto(s: TSocket; Buf: Pointer; len, flags: Longint; addrto: PSockAddr; tolen: Longint): Longint;
Description: Send data to a specific destination
Note See the Windows Sockets 2 documentation for additional information


function setsockopt(s: TSocket; level, optname: Longint; const optval; optlen: Longint): Longint;
Description: Set a socket option
Note See the Windows Sockets 2 documentation for additional information


function setsockopt(s: TSocket; level, optname: Longint; optval: PChar; optlen: Longint): Longint;
Description: Set a socket option
Note See the Windows Sockets 2 documentation for additional information


function setsockopt(s: TSocket; level, optname: Longint; optval: Pointer; optlen: Longint): Longint;
Description: Set a socket option
Note See the Windows Sockets 2 documentation for additional information


function shutdown(s: TSocket; how: Longint): Longint;
Description: Disable sends or receives on a socket
Note See the Windows Sockets 2 documentation for additional information


function socket(af, struct, protocol: Longint): TSocket;
Description: Create a socket that is bound to a specific transport service provider
Note See the Windows Sockets 2 documentation for additional information


function gethostbyaddr(addr: Pointer; len, family: Longint): PHostEnt;
Description: Retrieve the host information corresponding to a network address
Note Address will be in network byte order where applicable.

See the Windows Sockets 2 documentation for additional information


function gethostbyname(name: PChar): PHostEnt;
Description: Retrieve network address corresponding to a host name
Note See the Windows Sockets 2 documentation for additional information


function gethostname(name: PChar; len: Longint): Longint;
Description: Retrieve the standard host name for the local computer
Note See the Windows Sockets 2 documentation for additional information


function getservbyport(port: Longint; proto: PChar): PServEnt;
Description: Retrieve service information corresponding to a port and protocol
Note Port will be in network byte order.

See the Windows Sockets 2 documentation for additional information


function getservbyname(name, proto: PChar): PServEnt;
Description: Retrieve service information corresponding to a service name and protocol
Note See the Windows Sockets 2 documentation for additional information


function getprotobynumber(proto: Longint): PProtoEnt;
Description: Retrieve protocol information corresponding to a protocol number
Note See the Windows Sockets 2 documentation for additional information


function getprotobyname(name: PChar): PProtoEnt;
Description: Retrieve the protocol information corresponding to a protocol name
Note See the Windows Sockets 2 documentation for additional information


function getaddrinfo(pNodeName, pServiceName: PChar; pHints: PAddrInfo; var ppResult: PAddrInfo): LongInt;
Description: RFC 3493 protocol-independent translation from a host name to an address
Note See the Windows Sockets 2 documentation for additional information


procedure freeaddrinfo(ai: PAddrInfo);
Description: Free address information that GetAddrInfo dynamically allocates in TAddrInfo structures
Note See the Windows Sockets 2 documentation for additional information


function getnameinfo(sa: PSockAddr; salen: Integer; host: PChar; hostlen: DWORD; serv: PChar; servlen: DWORD; flags: Integer): Integer;
Description: RFC 3493 protocol-independent name resolution from an address to a host name and a port number to a service name
Note See the Windows Sockets 2 documentation for additional information


function Gai_StrError(ecode: Longint): PChar;
Description: Return an error message for an error code returned by GetAddrInfo or GetNameInfo
Note See the Windows Sockets 2 documentation for additional information


function WSAStartup(wVersionRequired: word; var WSData: TWSAData): Longint;
Description: Initiate use of Winsock 2 by an application
Note See the Windows Sockets 2 documentation for additional information


function WSACleanup: Longint;
Description: Terminate use of Winsock 2 by an application
Note See the Windows Sockets 2 documentation for additional information


procedure WSASetLastError(iError: Longint); inline;
Description: Set the error code that can be retrieved through the WSAGetLastError function
Note See the Windows Sockets 2 documentation for additional information


function WSAGetLastError: Longint; inline;
Description: Return the error status for the last Windows Sockets operation that failed
Note See the Windows Sockets 2 documentation for additional information


function __WSAFDIsSet(s: TSocket; var FDSet: TFDSet): BOOL;
Description: Return a value indicating whether a socket is included in a set of socket descriptors
Note See the Windows Sockets 2 documentation for additional information


function inet_pton(Family: Longint; const pszAddrString: PChar; pAddrBuf: Pointer): Longint;
Description: To be documented
Note Address will be returned in network byte order where applicable.

See the Windows Sockets 2 documentation for additional information


function InetPtonA(Family: Longint; const pszAddrString: PChar; pAddrBuf: Pointer): Longint;
Description: Convert an IPv4 or IPv6 Internet network address in its standard text presentation form into its numeric binary form
Note Address will be returned in network byte order where applicable.

See the Windows Sockets 2 documentation for additional information


function InetPtonW(Family: Longint; const pszAddrString: PWideChar; pAddrBuf: Pointer): Longint;
Description: Convert an IPv4 or IPv6 Internet network address in its standard text presentation form into its numeric binary form
Note Address will be returned in network byte order where applicable.

See the Windows Sockets 2 documentation for additional information


function inet_ntop(Family: Longint; pAddr: Pointer; pStringBuf: PChar; StringBufSize: Longint): PChar;
Description: Convert an IPv4 or IPv6 Internet network address into a string in Internet standard format
Note Address will be in network byte order where applicable.

See the Windows Sockets 2 documentation for additional information


function InetNtopA(Family: Longint; pAddr: Pointer; pStringBuf: PChar; StringBufSize: Longint): PChar;
Description: Convert an IPv4 or IPv6 Internet network address into a string in Internet standard format
Note Address will be in network byte order where applicable.

See the Windows Sockets 2 documentation for additional information


function InetNtopW(Family: Longint; pAddr: Pointer; pStringBuf: PWideChar; StringBufSize: Longint): PWideChar;
Description: Convert an IPv4 or IPv6 Internet network address into a string in Internet standard format
Note Address will be in network byte order where applicable.

See the Windows Sockets 2 documentation for additional information


function WSAHtonl( s : TSocket; hostlong : u_long; lpnetlong : pu_long ): Longint;
Description: Convert a u_long from host byte order to network byte order
Note See the Windows Sockets 2 documentation for additional information


function WSAHtons( s : TSocket; hostshort : u_short; lpnetshort : pu_short ): Longint;
Description: Convert a u_short from host byte order to network byte order
Note See the Windows Sockets 2 documentation for additional information


function WSANtohl( s : TSocket; netlong : u_long; lphostlong : pu_long ): Longint;
Description: Convert a u_long from network byte order to host byte order
Note See the Windows Sockets 2 documentation for additional information


function WSANtohs( s : TSocket; netshort : u_short; lphostshort : pu_short ): Longint;
Description: Convert a u_short from network byte order to host byte order
Note See the Windows Sockets 2 documentation for additional information


function WSAMakeSyncReply(Buflen, Error: Word): Longint;
Description: To be documented
Note None documented


function WSAMakeSelectReply(Event, Error: Word): Longint;
Description: To be documented
Note None documented


function WSAGetAsyncBuflen(Param: Longint): Word;
Description: To be documented
Note None documented


function WSAGetAsyncError(Param: Longint): Word;
Description: To be documented
Note None documented


function WSAGetSelectEvent(Param: Longint): Word;
Description: To be documented
Note None documented


function WSAGetSelectError(Param: Longint): Word;
Description: To be documented
Note None documented


procedure FD_CLR(Socket: TSocket; var FDSet: TFDSet);
Description: To be documented
Note None documented


function FD_ISSET(Socket: TSocket; var FDSet: TFDSet): Boolean;
Description: To be documented
Note None documented


procedure FD_SET(Socket: TSocket; var FDSet: TFDSet);
Description: To be documented
Note None documented


procedure FD_ZERO(var FDSet: TFDSet);
Description: To be documented
Note None documented


Winsock2 undocumented functions

function WsControl(Proto:DWORD; Action:DWORD; pRequestInfo:Pointer; var pcbRequestInfoLen:DWORD; pResponseInfo:Pointer; var pcbResponseInfoLen:DWORD):Integer;
Description: To be documented
Note None documented


function getnetbyaddr(addr: Pointer; len, Struct: Integer): PNetEnt;
Description: To be documented
Note Address will be in network order where applicable


function getnetbyname(name: PChar): PNetEnt;
Description: To be documented
Note None documented


Winsock2 enhanced functions

function WsControlEx(Proto:DWORD; Action:DWORD; pRequestInfo:Pointer; var pcbRequestInfoLen:DWORD; pResponseInfo:Pointer; var pcbResponseInfoLen:DWORD):Integer;
Description: To be documented
Note None documented


RTL text IO functions

function SysTextIOReadChar(var ACh:Char; AUserData:Pointer):Boolean;
Description: Handler for platform TextIOReadChar function
Note Not intended to be called directly by applications


function SysTextIOWriteChar(ACh:Char; AUserData:Pointer):Boolean;
Description: Handler for platform TextIOWriteChar function
Note Not intended to be called directly by applications


function SysTextIOWriteBuffer(ABuffer:PChar; ACount:LongInt; AUserData:Pointer):LongInt;
Description: Handler for platform TextIOWriteBuffer function
Note Not intended to be called directly by applications


Winsock2 helper functions

function Winsock2RedirectInput(s:TSocket):Boolean;
Description: Redirect standard input to the socket specified by s
s The socket to redirect input to (or INVALID_SOCKET to stop redirection)
Return True if completed successfully or False if an error occurred
Note Redirects the input of the text file Input which also redirects the input of Read, ReadLn and the standard C library.


function Winsock2RedirectOutput(s:TSocket):Boolean;
Description: Redirect standard output to the socket specified by s
s The socket to redirect output to (or INVALID_SOCKET to stop redirection)
Return True if completed successfully or False if an error occurred
Note Redirects the output of the text files Output, ErrOutput, StdOut and StdErr which also redirects the output of Write, WriteLn and the standard C library.


function Winsock2ErrorToString(AError:LongInt):String;
Description: To be documented
Note None documented


Return to Unit Reference