Difference between revisions of "Unit Sockets"

From Ultibo.org
Jump to: navigation, search
Line 129: Line 129:
 
|-
 
|-
 
| <code>FD_MAXFDSET = GlobalSock.FD_SETSIZE;</code>
 
| <code>FD_MAXFDSET = 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;
 
| &nbsp;
 
|-
 
|-

Revision as of 04:28, 10 June 2025

Return to Unit Reference


Description


Ultibo Network Sockets Interface unit

This unit incorporates the socketsh.inc header from rtl-extra and adds Ultibo specific functionality. The unit can then be used in place of the sockets unit normally provided by the rtl-extra package.

Notes: All BSD functions that accept an Address or Port expect them to be in Network order. All other functions that take an Address or Port expect them to be in Host order

This unit includes the interface normally provided by the sockets unit in the FPC package rtl-extras. The rtl-extras package does not build the sockets unit for target Ultibo as this unit will always be available to provide the required functionality for any other package that uses it.

Constants



Sockets specific constants SOCKETS_*
SOCKETS_DEVICE_TIMER_INTERVAL = 100; Timer interval for new device additions
 
SOCKETS_CONFIG_TIMER_INTERVAL = 1000;  
SOCKETS_FILTER_TIMER_INTERVAL = 1000;  
SOCKETS_PROTOCOL_TIMER_INTERVAL = 250; Previously 100
SOCKETS_SOCKET_TIMER_INTERVAL = 1000;  
SOCKETS_AUTH_TIMER_INTERVAL = 1000;  
SOCKETS_MONITOR_TIMER_INTERVAL = 1000;  
SOCKETS_TRANSPORT_TIMER_INTERVAL = 1000;  
SOCKETS_ADAPTER_TIMER_INTERVAL = 1000;  
 
INADDR_ANY = GlobalSock.INADDR_ANY;  
INADDR_NONE = GlobalSock.INADDR_NONE;  
 
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;  
 
This is used instead of -1, since the TSocket type is unsigned
INVALID_SOCKET = GlobalSock.INVALID_SOCKET;  
SOCKET_ERROR = GlobalSock.SOCKET_ERROR;  
 
INET_ADDRSTR_ANY = GlobalSock.INET_ADDRSTR_ANY;  
INET6_ADDRSTR_INIT = GlobalSock.INET6_ADDRSTR_INIT;  
 
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));  
 
NoAddress: in_addr = (s_addr:0);  
NoNet: in_addr = (s_addr:0);  
NoAddress6: in6_addr = (u6_addr16:(0,0,0,0,0,0,0,0));  
NoNet6: in6_addr = (u6_addr16:(0,0,0,0,0,0,0,0));  
 
FD_MAXFDSET = 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;  


Socket error Esock*, EAI_*
EsockEINTR = WSAEINTR;  
EsockEBADF = WSAEBADF;  
EsockEFAULT = WSAEFAULT;  
EsockEINVAL = WSAEINVAL;  
EsockEACCESS = WSAEACCES;  
EsockEMFILE = WSAEMFILE;  
EsockEMSGSIZE = WSAEMSGSIZE;  
EsockENOBUFS = WSAENOBUFS;  
EsockENOTCONN = WSAENOTCONN;  
EsockENOTSOCK = WSAENOTSOCK;  
EsockEPROTONOSUPPORT = WSAEPROTONOSUPPORT;  
EsockEWOULDBLOCK = WSAEWOULDBLOCK;  
EsockADDRINUSE = WSAEADDRINUSE;  
 
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;  


Socket shutdown option SHUT_*
SHUT_RD = SD_RECEIVE; Aliases so we are cross-platform
SHUT_WR = SD_SEND;  
SHUT_RDWR = SD_BOTH;  


Socket type SOCK_*
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;  


Socket input and output S_IN*
Two constants to determine whether part of socket is for in or output
S_IN = 0;  
S_OUT = 1;  


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;  


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;  


Socket option SO_*
Option flags per-socket
 
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_REUSEPORT = GlobalSock.SO_REUSEPORT;  
SO_TIMESTAMP = GlobalSock.SO_TIMESTAMP;  
SO_ACCEPTFILTER = GlobalSock.SO_ACCEPTFILTER;  
 
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;  
 
Options 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;  


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


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



Sockets device event

PSocketsDeviceEvent = ^TSocketsDeviceEvent;

TSocketsDeviceEvent = record

Timer:TTimerHandle;  
Device:PNetworkDevice;  

Numeric types

sa_family_t = cushort;

Integer types

size_t = GlobalTypes.SIZE_T; cuint32;
ssize_t = GlobalTypes.SSIZE_T; cint32;

Socket length

tsocklen = cint;
psocklen = ^tsocklen;

IPv4 address

pin_addr = ^in_addr;
in_addr = GlobalSock.in_addr;
TIn_addr = in_addr;
TInAddr = GlobalSock.TInAddr;
PInAddr = GlobalSock.PInAddr;

Internet socket address

TInetSockAddr = sockaddr_in;
PInetSockAddr = psockaddr_in;

Socket address

psockaddr = GlobalSock.psockaddr;
sockaddr = GlobalSock.TSockAddr;
TSockAddr = GlobalSock.TSockAddr;
psockaddr_in = ^sockaddr_in;
sockaddr_in = GlobalSock.sockaddr_in;

FD set type

TFDSet = GlobalSock.TFDSet;
PFDSet = GlobalSock.PFDSet; Legacy

Time value

PTimeVal = GlobalSock.PTimeVal;
TTimeVal = GlobalSock.TTimeVal;

Linger

plinger = GlobalSock.plinger;
linger = GlobalSock.linger;
TLinger = GlobalSock.TLinger;

IPv6 address

pin6_addr = ^in6_addr;
in6_addr = GlobalSock.in6_addr;
Tin6_addr = in6_addr;
TIn6Addr = GlobalSock.TIn6Addr;
PIn6Addr = GlobalSock.PIn6Addr;

Socket address IPv6

psockaddr_in6 = ^sockaddr_in6;
sockaddr_in6 = GlobalSock.sockaddr_in6;
TInetSockAddr6 = sockaddr_in6;
PInetSockAddr6 = psockaddr_in6;

Socket pair

TSockPairArray = array[0..1] of clong;
TSockArray = array[1..2] of clong; Legacy

Socket address

psockaddr_un = ^sockaddr_un;

sockaddr_un = packed record

sun_family:sa_family_t;  
sun_path:array[0..107] of char;  

Address information

PAddrInfo = GlobalSock.PAddrInfo;
TAddrInfo = GlobalSock.TAddrInfo;


Public variables


None defined

Function declarations



Initialization functions

procedure SocketsInit;
Description: To be documented
Note None documented


function SocketsStart:LongWord;
Description: To be documented
Note None documented


function SocketsStop:LongWord;
Description: To be documented
Note None documented


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


Sockets functions

function SocketError: cint;
Description: To be documented
Note None documented


function Socket(Domain,SocketType,Protocol:Longint):clong;
Description: To be documented
Note None documented


function Send(Sock:clong; const Buf; BufLen,Flags:Longint):Longint;
Description: To be documented
Note None documented


function SendTo(Sock:clong; const Buf; BufLen,Flags:Longint; var Addr; AddrLen : Longint):Longint;
Description: To be documented
Note None documented


function Recv(Sock:clong; var Buf; BufLen,Flags:Longint):Longint;
Description: To be documented
Note None documented


function RecvFrom(Sock : clong; var Buf; Buflen,Flags : Longint; var Addr; var AddrLen : longint) : longint;
Description: To be documented
Note None documented


function Connect(Sock:clong; const Addr; Addrlen:Longint):Boolean; overload;
Description: To be documented
Note None documented


function Shutdown(Sock:clong; How:Longint):Longint;
Description: To be documented
Note None documented


function Bind(Sock:clong; const Addr; AddrLen:Longint):Boolean;
Description: To be documented
Note None documented


function Listen(Sock:clong; MaxConnect:Longint):Boolean;
Description: To be documented
Note None documented


function Accept(Sock:clong; var Addr; var Addrlen:Longint):clong; overload;
Description: To be documented
Note None documented


function GetSocketName(Sock:clong; var Addr; var Addrlen:Longint):Longint;
Description: To be documented
Note None documented


function GetPeerName(Sock:clong; var Addr; var Addrlen:Longint):Longint;
Description: To be documented
Note None documented


function GetSocketOptions(Sock:clong; Level,OptName:Longint; var OptVal; var optlen:longint):Longint;
Description: To be documented
Note None documented


function SetSocketOptions(Sock:clong; Level,OptName:Longint; const OptVal; optlen:longint):Longint;
Description: To be documented
Note None documented


function SocketPair(Domain,SocketType,Protocol:Longint; var Pair:TSockArray):Longint;
Description: To be documented
Note None documented


function CloseSocket(Sock:clong):Longint;
Description: To be documented
Note None documented


function Inet_Addr(cp: PChar): Longint;
Description: To be documented
Note Address will be returned in network order


function Inet_Ntoa(inaddr: TInAddr): PChar;
Description: To be documented
Note As per the Winsock specification, the buffer returned by this function is only guaranteed to be valid until the next Sockets function call is made within the same thread. Therefore, the data should be copied before another Sockets call.
Note Address will be in network order


function Inet_Aton(cp: PChar; inaddr: PInAddr): Longint;
Description: To be documented
Note None documented


function Inet_Pton(family: Longint; Source: PChar; Dest: Pointer): Longint;
Description: To be documented
Note Address will be returned in network order


function Inet_Ntop(family: Longint; Source: Pointer; Dest: PChar; Size: Longint): PChar;
Description: To be documented
Note Source will be in network order where applicable


function GetHostByAddr(addr: Pointer; len, family: Longint): PHostEnt;
Description: To be documented
Note Address will be in network order where applicable


function GetHostByName(name: PChar): PHostEnt;
Description: To be documented
Note None documented


function GetHostName(name: PChar; len: Longint): Longint;
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


function GetServByPort(port: Longint; proto: PChar): PServEnt;
Description: To be documented
Note Port will be in network order


function GetServByName(name, proto: PChar): PServEnt;
Description: To be documented
Note None documented


function GetProtoByNumber(proto: Longint): PProtoEnt;
Description: To be documented
Note None documented


function GetProtoByName(name: PChar): PProtoEnt;
Description: To be documented
Note None documented


function GetAddrInfo(HostName, ServName: PChar; Hints: PAddrInfo; var Addr: PAddrInfo): Longint;
Description: RFC 3493 protocol-independent translation from a host name to an address
Note None documented


procedure FreeAddrInfo(ai: PAddrInfo);
Description: Free address information that GetAddrInfo dynamically allocates in TAddrInfo structures
Note None documented


function GetNameInfo(sa: PSockAddr; salen: Longint; host: PChar; hostlen: DWORD; serv: PChar; servlen: DWORD; flags: Longint): Longint;
Description: RFC 3493 protocol-independent name resolution from an address to a host name and a port number to a service name
Note None documented


function Gai_StrError(ecode: Longint): PChar;
Description: Return an error message for an error code returned by GetAddrInfo or GetNameInfo
Note None documented


RTL sockets functions

function fpsocket(domain:cint; xtype:cint; protocol: cint):clong;
Description: To be documented
Note None documented


function fpsend(s:clong; msg:pointer; len:size_t; flags:cint):ssize_t;
Description: To be documented
Note None documented


function fpsendto(s:clong; msg:pointer; len:size_t; flags:cint; tox :psockaddr; tolen: tsocklen):ssize_t;
Description: To be documented
Note None documented


function fprecv(s:clong; buf: pointer; len: size_t; flags: cint):ssize_t;
Description: To be documented
Note None documented


function fprecvfrom(s:clong; buf: pointer; len: size_t; flags: cint; from : psockaddr; fromlen : psocklen):ssize_t;
Description: To be documented
Note None documented


function fpconnect(s:clong; name  : psockaddr; namelen : tsocklen):cint;
Description: To be documented
Note None documented


function fpshutdown(s:clong; how:cint):cint;
Description: To be documented
Note None documented


function fpbind(s:clong; addrx : psockaddr; addrlen : tsocklen):cint;
Description: To be documented
Note None documented


function fplisten(s:clong; backlog : cint):cint;
Description: To be documented
Note None documented


function fpaccept(s:clong; addrx : psockaddr; addrlen : psocklen):clong;
Description: To be documented
Note None documented


function fpgetsockname(s:clong; name  : psockaddr; namelen : psocklen):cint;
Description: To be documented
Note None documented


function fpgetpeername(s:clong; name  : psockaddr; namelen : psocklen):cint;
Description: To be documented
Note None documented


function fpgetsockopt(s:clong; level:cint; optname:cint; optval:pointer; optlen : psocklen):cint;
Description: To be documented
Note None documented


function fpsetsockopt(s:clong; level:cint; optname:cint; optval:pointer; optlen :tsocklen):cint;
Description: To be documented
Note None documented


function fpsocketpair(d:cint; xtype:cint; protocol:cint; sv:pclong):cint;
Description: To be documented
Note None documented


RTL select functions

function fpselect(n:cint; readfds, writefds, exceptfds: PFDSet; TimeOut: PTimeVal):cint;
Description: To be documented
Note All sockets contained by the FDSet must be of the same type


function fpFD_SET(fdno:clong; var nset: TFDSet):cint;
Description: To be documented
Note None documented


function fpFD_CLR(fdno:clong; var nset: TFDSet):cint;
Description: To be documented
Note None documented


function fpFD_ZERO(out nset: TFDSet):cint;
Description: To be documented
Note None documented


function fpFD_ISSET(fdno:clong; const nset: TFDSet): cint;
Description: To be documented
Note None documented


RTL file/text sockets functions

function fpRead(Handle:LongInt; var BufPtr; Size:DWORD):DWORD;
Description: To be documented
Note None documented


function fpWrite(Handle:LongInt; var BufPtr; Size:DWORD):DWORD;
Description: To be documented
Note None documented


procedure OpenSock(var F:Text);
Description: To be documented
Note None documented


procedure IOSock(var F:Text);
Description: To be documented
Note None documented


procedure FlushSock(var F:Text);
Description: To be documented
Note None documented


procedure CloseSock(var F:text);
Description: To be documented
Note None documented


procedure Sock2Text(Sock:clong; Var SockIn,SockOut:Text); deprecated;
Description: Set up two Pascal Text file descriptors for reading and writing
Note None documented


function Accept(Sock:clong; var addr:TInetSockAddr; var SockIn,SockOut:File):Boolean; deprecated; overload;
Description: To be documented
Note None documented


function Accept(Sock:clong; var addr:TInetSockAddr; var SockIn,SockOut:text):Boolean; deprecated; overload;
Description: To be documented
Note None documented


function Connect(Sock:clong; const addr:TInetSockAddr; var SockIn,SockOut:text):Boolean; deprecated; overload;
Description: To be documented
Note None documented


function Connect(Sock:clong; const addr:TInetSockAddr; var SockIn,SockOut:file):Boolean; deprecated; overload;
Description: To be documented
Note None documented


procedure Sock2File(Sock:clong; Var SockIn,SockOut:File); deprecated;
Description: To be documented
Note None documented


Sockets helper functions

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


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


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


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


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


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


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


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


procedure SocketsNetworkDeviceAdd(Event:PSocketsDeviceEvent);
Description: To be documented
Note None documented


function SocketsNetworkDeviceRemove(Network:PNetworkDevice):LongWord;
Description: To be documented
Note None documented


function SocketsNetworkDeviceUp(Network:PNetworkDevice):LongWord;
Description: To be documented
Note None documented


function SocketsNetworkDeviceDown(Network:PNetworkDevice):LongWord;
Description: To be documented
Note None documented


function SocketsNetworkDeviceEnum(Network:PNetworkDevice; Data:Pointer):LongWord;
Description: To be documented
Note None documented


function SocketsNetworkDeviceNotify(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;
Description: To be documented
Note None documented


RTL sockets helper functions

function htonl(host:cardinal):cardinal; inline;
Description: To be documented
Note None documented


function ntohl(net:cardinal):cardinal; inline;
Description: To be documented
Note None documented


function htons(host:word):word; inline;
Description: To be documented
Note None documented


function ntohs(net:word):word; inline;
Description: To be documented
Note None documented


function NetAddrToStr(Entry:in_addr):AnsiString;
Description: To be documented
Note None documented


function HostAddrToStr(Entry:in_addr):AnsiString;
Description: To be documented
Note None documented


function StrToHostAddr(IP:AnsiString):in_addr;
Description: To be documented
Note None documented


function StrToNetAddr(IP:AnsiString):in_addr;
Description: To be documented
Note None documented


function HostToNet(Host:in_addr):in_addr;
Description: To be documented
Note None documented


function NetToHost(Net:in_addr):in_addr;
Description: To be documented
Note None documented


function HostToNet(Host:Longint):Longint;
Description: To be documented
Note None documented


function NetToHost(Net:Longint):Longint;
Description: To be documented
Note None documented


function ShortHostToNet(Host:Word):Word;
Description: To be documented
Note None documented


function ShortNetToHost(Net:Word):Word;
Description: To be documented
Note None documented


function HostAddrToStr6(Entry:Tin6_addr):AnsiString;
Description: To be documented
Note None documented


function StrToHostAddr6(IP:String):Tin6_addr; 
Description: To be documented
Note None documented


function NetAddrToStr6(Entry:Tin6_addr):AnsiString;
Description: To be documented
Note None documented


function StrToNetAddr6(IP:AnsiString):TIn6_Addr;
Description: To be documented
Note None documented


Return to Unit Reference