| Description | Uses | Classes, Interfaces, Objects and Records | Functions and Procedures | Types | Constants | Variables | 
Contains Windows sockets version 1.1 wrapper classes.
Version 2.5.2008.02 IOCP and WinSock 2.0 extentions
| Name | Description | 
|---|---|
packed record ip_mreq | 
– ip_mreq – | 
Class unaMulticastSocket | 
interface to join on */
 – unaMulticastSocket –  | 
Class unaSocket | 
Base class implementing Windows socket. | 
Class unaSocketsConnections | 
– unaSocketsConnections – | 
Class unaSocks | 
This class is used to create server and client sockets and manage the connections. | 
Class unaSocksConnection | 
This is base class for connection between two sockets. | 
Class unaSocksThread | 
This thread is used to handle server or client connections. | 
Class unaSocksThreads | 
– unaSocketsThreads – | 
Class unaTcpSocket | 
This class encapsulates TCP socket implementation. | 
Class unaUdpSocket | 
This class encapsulates UDP socket implementation. | 
packed record unaURICrack | 
URI crack record | 
Class unaWSA | 
Windows sockets manager class. | 
function checkError(value: int; fatal: bool = true ): int; | 
function lookupHost(const host: string; out ip: string; list: unaStringList = nil): int; overload; | 
function lookupHostH(const host: string): TIPv4H; | 
function lookupHostN(const host: string): TIPv4N; | 
function getHostInfoH(const ipH: TIPv4H): string; | 
function listAddresses(const host: string; list: unaStringList): int; | 
function lookupPort(const port: string): int; overload; | 
function lookupPort(const port: string; out port_info: protoent): int; overload; | 
function startup(version: uint = $0101): int; | 
function shutdown(): int; | 
function getWSAObject(): unaWSA; | 
function select(s: tSocket; r, w, e: pbool; timeout: tTimeout = tTimeout(INFINITE)): int; | 
function ipH2str(const ipH: TIPv4H): string; overload; | 
function ipH2str(const ipH: TIPv6H): string; overload; | 
function ipN2str(const ipN: TIPv4N): string; overload; | 
function ipN2str(const addr: TSockAddrIn): string; overload; | 
function ipH2ipN(const ipH: TIPv4H): TIPv4N; | 
function ipN2ipH(const ipN: TIPv4N): TIPv4H; overload; | 
function ipN2ipH(addr: PSockAddrIn): TIPv4H; overload; | 
function portHFromAddr(addr: PSockAddrIn): word; | 
function str2ipH(const ip: string): TIPv4H; | 
function str2ipN(const ip: string): TIPv4N; | 
function addr2str(addr: pSockAddrIn): string; | 
function str2addr(const ipport: string; var addr: sockaddr_in): bool; | 
function isMulticastAddr(const addr: string): bool; | 
function isMulticastAddrH(const ipH: TIPv4H): bool; | 
function isMulticastAddrN(const ipN: TIPv4N): bool; | 
function isBroadcastAddrN(const ipN: TIPv4N): bool; | 
function isLocalNetworkAddrH(const ipH: TIPv4H): bool; | 
function isThisHostIP_N(const ipN: TIPv4N): bool; | 
function sameAddr(const addr1, addr2: sockaddr_in; ipOnly: bool = false): bool; | 
function makeAddr(const host, port: string; var addr: sockaddr_in): bool; | 
function sameIPN(const ipN1, ipN2: TIPv4N): bool; | 
function httpQuery(const ip, port, query: string; callback: tIpQueryCallback = nil; timeout: tTimeout = 5000): int; | 
function ipQuery(const ip, port, query: string; proto: int = IPPROTO_TCP; callback: tIpQueryCallback = nil; timeout: tTimeout = 5000): int; | 
function crackURI(URI: string; var crack: unaURICrack; flags: DWORD = 0): bool; | 
function httpGetData(const URI: string; out data: aString; timeout: tTimeout = 5000): HRESULT; | 
pIPv4N	= ˆTIPv4N; | 
TIPv4N        = array[0..3] of byte; | 
pIPv4H	= ˆTIPv4H; | 
TIPv4H        = uint32; | 
pIPv6H        = ˆTIPv6H; | 
TIPv6H        = array[0..15] of byte; | 
tConID        = cardinal; | 
unaSocketEvent = (...); | 
unaSocksOnEventEvent = procedure(sender: tObject; event: unaSocketEvent; id, connId: tConID; data: pointer; size: uint) of object; | 
tIpQueryCallback = procedure(queryId: tConID; const query: string; const response, responseData: aString) of object; | 
c_defUdpConnTimeout 	= 60000 * 3; | 
c_unaMC_receive	 = 1; | 
c_unaMC_send		 = 2; | 
IP_ADD_MEMBERSHIP	= 12; | 
IP_DEFAULT_MULTICAST_LOOP	= 1; | 
IP_DEFAULT_MULTICAST_TTL	= 1; | 
IP_DROP_MEMBERSHIP	= 13; | 
IP_MAX_MEMBERSHIPS		= 20; | 
IP_MULTICAST_IF	= 9; | 
IP_MULTICAST_LOOP	= 11; | 
IP_MULTICAST_TTL	= 10; | 
SD_BOTH        	= 2; | 
SO_MAX_MSG_SIZE	= $2003; | 
c_maxThreadPoolSize: unsigned	= 256; | 
function checkError(value: int; fatal: bool = true ): int; | 
| 
 – internal –  | 
function lookupHost(const host: string; out ip: string; list: unaStringList = nil): int; overload; | 
| 
 Lookups host name. If the "list" parameter is not nil, it also lists all addresses assigned to a host. Host name could be in integer ("194.44.186.254") or alpha ("www.microsoft.com") format or "" for local machine. Fills the given ip string with a string representation of the IP address of the host (if resolved). Returns0 if successful or specific WSA error otherwise.  | 
function lookupHostH(const host: string): TIPv4H; | 
| 
 Lookups host name. 
 Parameters
 ReturnsIP address (in host byte order) of the host or default parameter value if lookup fails.  | 
function lookupHostN(const host: string): TIPv4N; | 
| 
 Lookups host name. 
 Parameters
 ReturnsIP address (in network byte order) of the host or default parameter value if lookup fails.  | 
function getHostInfoH(const ipH: TIPv4H): string; | 
| 
 Lookups host info. 
 Parameters
 ReturnsFQDN of the host (if any)  | 
function listAddresses(const host: string; list: unaStringList): int; | 
| 
 List all addresses assigned to a host. 
 Parameters
 Returns0 if successful or specific WSA error otherwise.  | 
function lookupPort(const port: string): int; overload; | 
| 
 Lookups port number. 
 Parameters
 Returnsport number if successful, or -1 if port is invalid or unknown.  | 
function lookupPort(const port: string; out port_info: protoent): int; overload; | 
| 
 Lookups port number. Also fills given port_info parameter. Parameters
 Returns0 if successful, -1 if port is "" or specific WSA error otherwise.  | 
function startup(version: uint = $0101): int; | 
| 
 Startups the Windows sockets by creating unaWsa class instance.  | 
function shutdown(): int; | 
| 
 Shutdowns the Windows sockets by deleting the unaWsa class instance created in startup() routine.  | 
function getWSAObject(): unaWSA; | 
| 
 Returns unaWSA class instance created by a call to startup(), or by unaSocks class.  | 
function select(s: tSocket; r, w, e: pbool; timeout: tTimeout = tTimeout(INFINITE)): int; | 
| 
 Issues select() operation on a socket. 
 Parameters
 Returns0 if timeout occured, 1 if successfull, or some specific WSA error otherwise.  | 
function ipH2str(const ipH: TIPv4H): string; overload; | 
| 
 Converts host byte order (little endian) unsigned 32 bits integer to string representing IP address (xxx.xxx.xxx.xxx).  | 
function ipH2str(const ipH: TIPv6H): string; overload; | 
| 
 .  | 
function ipN2str(const ipN: TIPv4N): string; overload; | 
| 
 Converts network byte order (big endian) unsigned 32 bits integer to string representing IP address (xxx.xxx.xxx.xxx).  | 
function ipN2str(const addr: TSockAddrIn): string; overload; | 
| 
 Converts IP from address to string representing IP address (xxx.xxx.xxx.xxx).  | 
function ipH2ipN(const ipH: TIPv4H): TIPv4N; | 
| 
 Converts host byte ordered IP to network byte order (big endian) unsigned 32 bits integer.  | 
function ipN2ipH(const ipN: TIPv4N): TIPv4H; overload; | 
| 
 Converts network byte order (big endian) unsigned 32 bits integer to host byte ordered IP.  | 
function ipN2ipH(addr: PSockAddrIn): TIPv4H; overload; | 
| 
 Converts network byte order (big endian) address record to host byte ordered IP.  | 
function portHFromAddr(addr: PSockAddrIn): word; | 
| 
 Returns port (in host order) from address  | 
function str2ipH(const ip: string): TIPv4H; | 
| 
 Converts string representing IP address (xxx.xxx.xxx.xxx) into host byte order (little endian) unsigned 32 bits integer.  | 
function str2ipN(const ip: string): TIPv4N; | 
| 
 Converts string representing IP address (xxx.xxx.xxx.xxx) into network byte order (big endian) unsigned 32 bits integer.  | 
function addr2str(addr: pSockAddrIn): string; | 
| 
 Converts socket address to string.  | 
function str2addr(const ipport: string; var addr: sockaddr_in): bool; | 
| 
 Converts string to socket address. ipport should be in format udp://name-or-ip:port or tcp://name-or-ip:port  | 
function isMulticastAddr(const addr: string): bool; | 
| 
 Return True if specified address is whiting multicast range.  | 
function isMulticastAddrH(const ipH: TIPv4H): bool; | 
| 
 Return True if specified address is whiting multicast range. Parameters
  | 
function isMulticastAddrN(const ipN: TIPv4N): bool; | 
| 
 Return True if specified address is whiting multicast range. Parameters
  | 
function isBroadcastAddrN(const ipN: TIPv4N): bool; | 
| 
 Return True if specified address is whiting broadcast range. Parameters
  | 
function isLocalNetworkAddrH(const ipH: TIPv4H): bool; | 
| 
 Checks if IP is assigned to LAN range 
 Parameters
 ReturnsTrue if specified address is valid for LAN only and cannot "legitimately appear on the public Internet".  | 
function isThisHostIP_N(const ipN: TIPv4N): bool; | 
| 
 Checks if specified IP address is referencing this host. 
 Parameters
 ReturnsTrue if IP is referencing local host is some way (127.0.0.1, etc)  | 
function sameAddr(const addr1, addr2: sockaddr_in; ipOnly: bool = false): bool; | 
| 
 Returns True if two addresses are same (has same IP and port).  | 
function makeAddr(const host, port: string; var addr: sockaddr_in): bool; | 
| 
 Returns True if function succeeded.  | 
function sameIPN(const ipN1, ipN2: TIPv4N): bool; | 
| 
 Returns true if both IPs are same  | 
function httpQuery(const ip, port, query: string; callback: tIpQueryCallback = nil; timeout: tTimeout = 5000): int; | 
| 
 returns -1 in case of some problem or valid queryId (which is an integer greater than 0) if all seems to be OK  | 
function ipQuery(const ip, port, query: string; proto: int = IPPROTO_TCP; callback: tIpQueryCallback = nil; timeout: tTimeout = 5000): int; | 
function crackURI(URI: string; var crack: unaURICrack; flags: DWORD = 0): bool; | 
| 
 Uses InternetCrackURL(), takes care of unicode/ansi versions.  | 
function httpGetData(const URI: string; out data: aString; timeout: tTimeout = 5000): HRESULT; | 
| 
 Downloads small file from HTTP server. 
 Parameters
 ReturnsS_OK if no error  | 
pIPv4N	= ˆTIPv4N; | 
TIPv4N        = array[0..3] of byte; | 
pIPv4H	= ˆTIPv4H; | 
| 
 network byte order  | 
TIPv4H        = uint32; | 
pIPv6H        = ˆTIPv6H; | 
| 
 host byte order  | 
TIPv6H        = array[0..15] of byte; | 
tConID        = cardinal; | 
unaSocksOnEventEvent = procedure(sender: tObject; event: unaSocketEvent; id, connId: tConID; data: pointer; size: uint) of object; | 
| 
 Socks event handler type  | 
tIpQueryCallback = procedure(queryId: tConID; const query: string; const response, responseData: aString) of object; | 
| 
 – IP/HTTP –  | 
c_defUdpConnTimeout 	= 60000 * 3; | 
| 
 default timeout for sockets "connected" to UDP server is 3 minutes  | 
c_unaMC_receive	 = 1; | 
| 
 I/O flags  | 
c_unaMC_send		 = 2; | 
IP_ADD_MEMBERSHIP	= 12; | 
| 
 set/get - IP multicast loopback */  | 
IP_DEFAULT_MULTICAST_LOOP	= 1; | 
IP_DEFAULT_MULTICAST_TTL	= 1; | 
| 
 set - drop IP group membership */  | 
IP_DROP_MEMBERSHIP	= 13; | 
| 
 set - add IP group membership */  | 
IP_MAX_MEMBERSHIPS		= 20; | 
IP_MULTICAST_IF	= 9; | 
IP_MULTICAST_LOOP	= 11; | 
| 
 set/get - IP multicast TTL */  | 
IP_MULTICAST_TTL	= 10; | 
| 
 set/get - IP multicast interface */  | 
SD_BOTH        	= 2; | 
| 
 missing in Delphi 5 or earlier  | 
SO_MAX_MSG_SIZE	= $2003; | 
| 
 maximum message size  | 
c_maxThreadPoolSize: unsigned	= 256; | 
| 
 maximum number of threads in pool  | 
(c) 2012 Lake of Soft