Unit Sockets - Ultibo.org

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_WAITALL = GlobalSock.MSG_WAITALL;  
 
MSG_INTERRUPT = GlobalSock.MSG_INTERRUPT;  
MSG_MAXIOVLEN = GlobalSock.MSG_MAXIOVLEN;  
 
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

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

function SocketsStart:LongWord;

Description: To be documented

function SocketsStop:LongWord;

Description: To be documented

procedure SocketsAsyncStart(Data:Pointer);

Description: To be documented

Sockets functions

function SocketError: cint;

Description: To be documented

function Socket(Domain,SocketType,Protocol:Longint):clong;

Description: To be documented

function Send(Sock:clong; const Buf; BufLen,Flags:Longint):Longint;

Description: To be documented

function SendTo(Sock:clong; const Buf; BufLen,Flags:Longint; var Addr; AddrLen : Longint):Longint;

Description: To be documented

function Recv(Sock:clong; var Buf; BufLen,Flags:Longint):Longint;

Description: To be documented

function RecvFrom(Sock : clong; var Buf; Buflen,Flags : Longint; var Addr; var AddrLen : longint) : longint;

Description: To be documented

function Connect(Sock:clong; const Addr; Addrlen:Longint):Boolean; overload;

Description: To be documented

function Shutdown(Sock:clong; How:Longint):Longint;

Description: To be documented

function Bind(Sock:clong; const Addr; AddrLen:Longint):Boolean;

Description: To be documented

function Listen(Sock:clong; MaxConnect:Longint):Boolean;

Description: To be documented

function Accept(Sock:clong; var Addr; var Addrlen:Longint):clong; overload;

Description: To be documented

function GetSocketName(Sock:clong; var Addr; var Addrlen:Longint):Longint;

Description: To be documented

function GetPeerName(Sock:clong; var Addr; var Addrlen:Longint):Longint;

Description: To be documented

function GetSocketOptions(Sock:clong; Level,OptName:Longint; var OptVal; var optlen:longint):Longint;

Description: To be documented

function SetSocketOptions(Sock:clong; Level,OptName:Longint; const OptVal; optlen:longint):Longint;

Description: To be documented

function SocketPair(Domain,SocketType,Protocol:Longint; var Pair:TSockArray):Longint;

Description: To be documented

function IoctlSocket(Sock:clong; Cmd:Longint; var Arg:LongWord):Longint;

Description: To be documented

function CloseSocket(Sock:clong):Longint;

Description: To be 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

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

function GetHostName(name: PChar; len: Longint): Longint;

Description: To be 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

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

function GetProtoByNumber(proto: Longint): PProtoEnt;

Description: To be documented

function GetProtoByName(name: PChar): PProtoEnt;

Description: To be 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

procedure FreeAddrInfo(ai: PAddrInfo);

Description: Free address information that GetAddrInfo dynamically allocates in TAddrInfo structures

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

function Gai_StrError(ecode: Longint): PChar;

Description: Return an error message for an error code returned by GetAddrInfo or GetNameInfo

RTL sockets functions

function fpsocket(domain:cint; xtype:cint; protocol: cint):clong;

Description: To be documented

function fpsend(s:clong; msg:pointer; len:size_t; flags:cint):ssize_t;

Description: To be documented

function fpsendto(s:clong; msg:pointer; len:size_t; flags:cint; tox :psockaddr; tolen: tsocklen):ssize_t;

Description: To be documented

function fprecv(s:clong; buf: pointer; len: size_t; flags: cint):ssize_t;

Description: To be documented

function fprecvfrom(s:clong; buf: pointer; len: size_t; flags: cint; from : psockaddr; fromlen : psocklen):ssize_t;

Description: To be documented

function fpconnect(s:clong; name  : psockaddr; namelen : tsocklen):cint;

Description: To be documented

function fpshutdown(s:clong; how:cint):cint;

Description: To be documented

function fpbind(s:clong; addrx : psockaddr; addrlen : tsocklen):cint;

Description: To be documented

function fplisten(s:clong; backlog : cint):cint;

Description: To be documented

function fpaccept(s:clong; addrx : psockaddr; addrlen : psocklen):clong;

Description: To be documented

function fpgetsockname(s:clong; name  : psockaddr; namelen : psocklen):cint;

Description: To be documented

function fpgetpeername(s:clong; name  : psockaddr; namelen : psocklen):cint;

Description: To be documented

function fpgetsockopt(s:clong; level:cint; optname:cint; optval:pointer; optlen : psocklen):cint;

Description: To be documented

function fpsetsockopt(s:clong; level:cint; optname:cint; optval:pointer; optlen :tsocklen):cint;

Description: To be documented

function fpsocketpair(d:cint; xtype:cint; protocol:cint; sv:pclong):cint;

Description: To be 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

function fpFD_CLR(fdno:clong; var nset: TFDSet):cint;

Description: To be documented

function fpFD_ZERO(out nset: TFDSet):cint;

Description: To be documented

function fpFD_ISSET(fdno:clong; const nset: TFDSet): cint;

Description: To be documented

RTL file/text sockets functions

function fpRead(Handle:LongInt; var BufPtr; Size:DWORD):DWORD;

Description: To be documented

function fpWrite(Handle:LongInt; var BufPtr; Size:DWORD):DWORD;

Description: To be documented

procedure OpenSock(var F:Text);

Description: To be documented

procedure IOSock(var F:Text);

Description: To be documented

procedure FlushSock(var F:Text);

Description: To be documented

procedure CloseSock(var F:text);

Description: To be documented

procedure Sock2Text(Sock:clong; Var SockIn,SockOut:Text); deprecated;

Description: Set up two Pascal Text file descriptors for reading and writing

function Accept(Sock:clong; var addr:TInetSockAddr; var SockIn,SockOut:File):Boolean; deprecated; overload;

Description: To be documented

function Accept(Sock:clong; var addr:TInetSockAddr; var SockIn,SockOut:text):Boolean; deprecated; overload;

Description: To be documented

function Connect(Sock:clong; const addr:TInetSockAddr; var SockIn,SockOut:text):Boolean; deprecated; overload;

Description: To be documented

function Connect(Sock:clong; const addr:TInetSockAddr; var SockIn,SockOut:file):Boolean; deprecated; overload;

Description: To be documented

procedure Sock2File(Sock:clong; Var SockIn,SockOut:File); deprecated;

Description: To be documented

Sockets helper functions

procedure SocketsProcessConfig(Data:Pointer);

Description: To be documented

procedure SocketsProcessFilter(Data:Pointer);

Description: To be documented

procedure SocketsProcessProtocol(Data:Pointer);

Description: To be documented

procedure SocketsProcessSocket(Data:Pointer);

Description: To be documented

procedure SocketsProcessAuth(Data:Pointer);

Description: To be documented

procedure SocketsProcessMonitor(Data:Pointer);

Description: To be documented

procedure SocketsProcessTransport(Data:Pointer);

Description: To be documented

procedure SocketsProcessAdapter(Data:Pointer);

Description: To be documented

procedure SocketsNetworkDeviceAdd(Event:PSocketsDeviceEvent);

Description: To be documented

function SocketsNetworkDeviceRemove(Network:PNetworkDevice):LongWord;

Description: To be documented

function SocketsNetworkDeviceUp(Network:PNetworkDevice):LongWord;

Description: To be documented

function SocketsNetworkDeviceDown(Network:PNetworkDevice):LongWord;

Description: To be documented

function SocketsNetworkDeviceEnum(Network:PNetworkDevice; Data:Pointer):LongWord;

Description: To be documented

function SocketsNetworkDeviceNotify(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;

Description: To be documented

RTL sockets helper functions

function htonl(host:cardinal):cardinal; inline;

Description: To be documented

function ntohl(net:cardinal):cardinal; inline;

Description: To be documented

function htons(host:word):word; inline;

Description: To be documented

function ntohs(net:word):word; inline;

Description: To be documented

function NetAddrToStr(Entry:in_addr):AnsiString;

Description: To be documented

function HostAddrToStr(Entry:in_addr):AnsiString;

Description: To be documented

function StrToHostAddr(IP:AnsiString):in_addr;

Description: To be documented

function StrToNetAddr(IP:AnsiString):in_addr;

Description: To be documented

function TryStrToHostAddr(IP:AnsiString; out ip4:in_addr):Boolean;

Description: To be documented

function TryStrToNetAddr(IP:AnsiString; out ip4:in_addr):Boolean;

Description: To be documented

function HostToNet(Host:in_addr):in_addr;

Description: To be documented

function NetToHost(Net:in_addr):in_addr;

Description: To be documented

function HostToNet(Host:Longint):Longint;

Description: To be documented

function NetToHost(Net:Longint):Longint;

Description: To be documented

function ShortHostToNet(Host:Word):Word;

Description: To be documented

function ShortNetToHost(Net:Word):Word;

Description: To be documented

function HostAddrToStr6(Entry:Tin6_addr):AnsiString;

Description: To be documented

function StrToHostAddr6(IP:String):Tin6_addr; 

Description: To be documented

function NetAddrToStr6(Entry:Tin6_addr):AnsiString;

Description: To be documented

function StrToNetAddr6(IP:AnsiString):TIn6_Addr;

Description: To be documented

function TryStrToHostAddr6(IP:AnsiString; out ip6:in6_addr):Boolean;

Description: To be documented

Return to Unit Reference