Difference between revisions of "Unit Sockets"

From Ultibo.org
Jump to: navigation, search
Line 977: Line 977:
 
----
 
----
  
''To be documented''
+
 
 +
'''Sockets device event'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PSocketsDeviceEvent = ^TSocketsDeviceEvent;</code>
 +
 
 +
<code>TSocketsDeviceEvent = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Timer:TTimerHandle;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>Device:PNetworkDevice;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Numeric types'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>cushort = Word;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>sa_family_t = cushort;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Integer types'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>cuint8 = Byte;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>cuint16 = Word;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>cuint32 = Cardinal;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>size_t = GlobalTypes.SIZE_T;</code>
 +
| style="width: 40%;"|cuint32;
 +
|-
 +
| <code>ssize_t = cuint16;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>cint = LongInt;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>pcint = ^cint;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Socket length'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>tsocklen = cint;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>psocklen = ^tsocklen;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''IPv4 address'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>pin_addr = ^in_addr;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>in_addr = GlobalSock.in_addr;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>TIn_addr = in_addr;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>TInAddr = GlobalSock.TInAddr;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>PInAddr = GlobalSock.PInAddr;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Internet socket address'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TInetSockAddr = sockaddr_in;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>PInetSockAddr = psockaddr_in;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Socket address'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>psockaddr = GlobalSock.psockaddr;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>sockaddr = GlobalSock.TSockAddr;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>TSockAddr = GlobalSock.TSockAddr;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>psockaddr_in = ^sockaddr_in;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>sockaddr_in = GlobalSock.sockaddr_in;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Linger'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>plinger = GlobalSock.plinger;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>linger = GlobalSock.linger;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>TLinger = GlobalSock.TLinger;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''IPv6 address'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>pin6_addr = ^in6_addr;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>in6_addr = GlobalSock.in6_addr;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>Tin6_addr = in6_addr;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>TIn6Addr = GlobalSock.TIn6Addr;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>PIn6Addr = GlobalSock.PIn6Addr;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Socket address IPv6'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>psockaddr_in6 = ^sockaddr_in6;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>sockaddr_in6 = GlobalSock.sockaddr_in6;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>TInetSockAddr6 = sockaddr_in6;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>PInetSockAddr6 = psockaddr_in6;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Socket pair'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TSockPairArray = array[0..1] of Longint;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>TSockArray  = array[1..2] of Longint;</code>
 +
| style="width: 40%;"|Legacy
 +
|-
 +
|}
 +
 +
'''Socket address types'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>psockaddr_un = ^sockaddr_un;</code>
 +
 
 +
<code>sockaddr_un = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>sun_family:sa_family_t;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>sun_path:array[0..107] of char;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Address information'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PAddrInfo = GlobalSock.PAddrInfo;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>TAddrInfo = GlobalSock.TAddrInfo;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
<br />
  
 
=== Public variables ===
 
=== Public variables ===

Revision as of 04:28, 3 March 2017

Return to Unit Reference


Description


Ultibo Network Sockets interface unit

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



[Expand]
Sockets specific constants SOCKETS_*


[Expand]
Socket error constants Esock*, EAI_*


[Expand]
Socket shutdown option constants SHUT_*


[Expand]
Socket type constants SOCK_*


[Expand]
Socket input/output constants S_IN*


[Expand]
Address family constants AF_*


[Expand]
Protocol family constants PF_*


[Expand]
IP protocol constants IPPROTO_*


[Expand]
IP port constants IPPORT_*


[Expand]
IP option constants IP_*


[Expand]
Socket option constants SO_*


[Expand]
TCP option constants TCP_*


[Expand]
UDP option constants UDP_*


[Expand]
Message flag constants MSG_*


[Expand]
Address info flag constants AI_*


[Expand]
Name info flag constants NI_*


Type definitions



Sockets device event

[Expand]

PSocketsDeviceEvent = ^TSocketsDeviceEvent;

TSocketsDeviceEvent = record

Numeric types

cushort = Word;
sa_family_t = cushort;

Integer types

cuint8 = Byte;
cuint16 = Word;
cuint32 = Cardinal;
size_t = GlobalTypes.SIZE_T; cuint32;
ssize_t = cuint16;
cint = LongInt;
pcint = ^cint;

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;

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 Longint;
TSockArray = array[1..2] of Longint; Legacy

Socket address types

[Expand]

psockaddr_un = ^sockaddr_un;

sockaddr_un = packed record

Address information

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


Public variables


None defined

Function declarations



Initialization functions

[Expand]
procedure SocketsInit;
Description: To be documented


[Expand]
function SocketsStart:LongWord;
Description: To be documented


[Expand]
function SocketsStop:LongWord;
Description: To be documented


[Expand]
procedure SocketsAsyncStart(Data:Pointer);
Description: To be documented


Sockets functions

[Expand]
function SocketError: cint;
Description: To be documented


[Expand]
function Socket(Domain,SocketType,Protocol:Longint):Longint;
Description: To be documented


[Expand]
function Send(Sock:Longint; const Buf; BufLen,Flags:Longint):Longint;
Description: To be documented


[Expand]
function SendTo(Sock:Longint; const Buf; BufLen,Flags:Longint; var Addr; AddrLen : Longint):Longint;
Description: To be documented


[Expand]
function Recv(Sock:Longint; var Buf; BufLen,Flags:Longint):Longint;
Description: To be documented


[Expand]
function RecvFrom(Sock : Longint; var Buf; Buflen,Flags : Longint; var Addr; var AddrLen : longint) : longint;
Description: To be documented


[Expand]
function Connect(Sock:Longint; const Addr; Addrlen:Longint):Boolean;
Description: To be documented


[Expand]
function Shutdown(Sock:Longint; How:Longint):Longint;
Description: To be documented


[Expand]
function Bind(Sock:Longint; const Addr; AddrLen:Longint):Boolean;
Description: To be documented


[Expand]
function Listen(Sock,MaxConnect:Longint):Boolean;
Description: To be documented


[Expand]
function Accept(Sock:Longint; var Addr; var Addrlen:Longint):Longint;
Description: To be documented


[Expand]
function GetSocketName(Sock:Longint; var Addr; var Addrlen:Longint):Longint;
Description: To be documented


[Expand]
function GetPeerName(Sock:Longint; var Addr; var Addrlen:Longint):Longint;
Description: To be documented


[Expand]
function GetSocketOptions(Sock,Level,OptName:Longint; var OptVal; var optlen:longint):Longint;
Description: To be documented


[Expand]
function SetSocketOptions(Sock,Level,OptName:Longint; const OptVal; optlen:longint):Longint;
Description: To be documented


[Expand]
function SocketPair(Domain,SocketType,Protocol:Longint; var Pair:TSockArray):Longint;
Description: To be documented


[Expand]
function CloseSocket(Sock:Longint):Longint;
Description: To be documented


[Expand]
function Inet_Addr(cp: PChar): Longint;
Description: To be documented


[Expand]
function Inet_Ntoa(inaddr: TInAddr): PChar;
Description: To be documented


[Expand]
function Inet_Pton(family: Longint; Source: PChar; Dest: Pointer): Longint;
Description: To be documented


[Expand]
function Inet_Ntop(family: Longint; Source: Pointer; Dest: PChar; Size: Longint): PChar;
Description: To be documented


[Expand]
function GetHostByAddr(addr: Pointer; len, family: Longint): PHostEnt;
Description: To be documented


[Expand]
function GetHostByName(name: PChar): PHostEnt;
Description: To be documented


[Expand]
function GetHostName(name: PChar; len: Longint): Longint;
Description: To be documented


[Expand]
function GetNetByAddr(addr: Pointer; len, Struct: Integer): PNetEnt;
Description: To be documented


[Expand]
function GetNetByName(name: PChar): PNetEnt;
Description: To be documented


[Expand]
function GetServByPort(port: Longint; proto: PChar): PServEnt;
Description: To be documented


[Expand]
function GetServByName(name, proto: PChar): PServEnt;
Description: To be documented


[Expand]
function GetProtoByNumber(proto: Longint): PProtoEnt;
Description: To be documented


[Expand]
function GetProtoByName(name: PChar): PProtoEnt;
Description: To be documented


[Expand]
function GetAddrInfo(HostName, ServName: PChar; Hints: PAddrInfo; var Addr: PAddrInfo): Longint;
Description: To be documented


[Expand]
procedure FreeAddrInfo(ai: PAddrInfo);
Description: To be documented


[Expand]
function GetNameInfo(sa: PSockAddr; salen: Longint; host: PChar; hostlen: DWORD; serv: PChar; servlen: DWORD; flags: Longint): Longint;
Description: To be documented


RTL sockets functions

[Expand]
function fpsocket(domain:cint; xtype:cint; protocol: cint):cint;
Description: To be documented


[Expand]
function fpsend(s:cint; msg:pointer; len:size_t; flags:cint):ssize_t;
Description: To be documented


[Expand]
function fpsendto(s:cint; msg:pointer; len:size_t; flags:cint; tox :psockaddr; tolen: tsocklen):ssize_t;
Description: To be documented


[Expand]
function fprecv(s:cint; buf: pointer; len: size_t; flags: cint):ssize_t;
Description: To be documented


[Expand]
function fprecvfrom(s:cint; buf: pointer; len: size_t; flags: cint; from : psockaddr; fromlen : psocklen):ssize_t;
Description: To be documented


[Expand]
function fpconnect(s:cint; name  : psockaddr; namelen : tsocklen):cint;
Description: To be documented


[Expand]
function fpshutdown(s:cint; how:cint):cint;
Description: To be documented


[Expand]
function fpbind(s:cint; addrx : psockaddr; addrlen : tsocklen):cint;
Description: To be documented


[Expand]
function fplisten(s:cint; backlog : cint):cint;
Description: To be documented


[Expand]
function fpaccept(s:cint; addrx : psockaddr; addrlen : psocklen):cint;
Description: To be documented


[Expand]
function fpgetsockname(s:cint; name  : psockaddr; namelen : psocklen):cint;
Description: To be documented


[Expand]
function fpgetpeername(s:cint; name  : psockaddr; namelen : psocklen):cint;
Description: To be documented


[Expand]
function fpgetsockopt(s:cint; level:cint; optname:cint; optval:pointer; optlen : psocklen):cint;
Description: To be documented


[Expand]
function fpsetsockopt(s:cint; level:cint; optname:cint; optval:pointer; optlen :tsocklen):cint;
Description: To be documented


[Expand]
function fpsocketpair(d:cint; xtype:cint; protocol:cint; sv:pcint):cint;
Description: To be documented


RTL File/Text sockets functions

[Expand]
function fpRead(Handle:LongInt; var BufPtr; Size:DWORD):DWORD;
Description: To be documented


[Expand]
function fpWrite(Handle:LongInt; var BufPtr; Size:DWORD):DWORD;
Description: To be documented


[Expand]
procedure OpenSock(var F:Text);
Description: To be documented


[Expand]
procedure IOSock(var F:Text);
Description: To be documented


[Expand]
procedure FlushSock(var F:Text);
Description: To be documented


[Expand]
procedure CloseSock(var F:text);
Description: To be documented


[Expand]
procedure Sock2Text(Sock:Longint; Var SockIn,SockOut:Text);
Description: Set up two Pascal Text file descriptors for reading and writing


[Expand]
function DoAccept(Sock:longint; var addr:TInetSockAddr):longint;
Description: To be documented


[Expand]
function Accept(Sock:longint; var addr:TInetSockAddr; var SockIn,SockOut:File):Boolean;
Description: To be documented


[Expand]
function Accept(Sock:longint; var addr:TInetSockAddr; var SockIn,SockOut:text):Boolean;
Description: To be documented


[Expand]
function DoConnect(Sock:longint; const addr:TInetSockAddr):Boolean;
Description: To be documented


[Expand]
function Connect(Sock:longint; const addr:TInetSockAddr; var SockIn,SockOut:text):Boolean;
Description: To be documented


[Expand]
function Connect(Sock:longint; const addr:TInetSockAddr; var SockIn,SockOut:file):Boolean;
Description: To be documented


[Expand]
procedure Sock2File(Sock:Longint; Var SockIn,SockOut:File);
Description: To be documented


Sockets helper functions

[Expand]
procedure SocketsProcessConfig(Data:Pointer);
Description: To be documented


[Expand]
procedure SocketsProcessFilter(Data:Pointer);
Description: To be documented


[Expand]
procedure SocketsProcessProtocol(Data:Pointer);
Description: To be documented


[Expand]
procedure SocketsProcessSocket(Data:Pointer);
Description: To be documented


[Expand]
procedure SocketsProcessAuth(Data:Pointer);
Description: To be documented


[Expand]
procedure SocketsProcessMonitor(Data:Pointer);
Description: To be documented


[Expand]
procedure SocketsProcessTransport(Data:Pointer);
Description: To be documented


[Expand]
procedure SocketsProcessAdapter(Data:Pointer);
Description: To be documented


[Expand]
procedure SocketsNetworkDeviceAdd(Event:PSocketsDeviceEvent);
Description: To be documented


[Expand]
function SocketsNetworkDeviceRemove(Network:PNetworkDevice):LongWord;
Description: To be documented


[Expand]
function SocketsNetworkDeviceEnum(Network:PNetworkDevice; Data:Pointer):LongWord;
Description: To be documented


[Expand]
function SocketsNetworkDeviceNotify(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;
Description: To be documented


RTL sockets helper functions

[Expand]
function htonl(host:cardinal):cardinal; inline;
Description: To be documented


[Expand]
function ntohl(net:cardinal):cardinal; inline;
Description: To be documented


[Expand]
function htons(host:word):word; inline;
Description: To be documented


[Expand]
function ntohs(net:word):word; inline;
Description: To be documented


[Expand]
function NetAddrToStr(Entry:in_addr):AnsiString;
Description: To be documented


[Expand]
function HostAddrToStr(Entry:in_addr):AnsiString;
Description: To be documented


[Expand]
function StrToHostAddr(IP:AnsiString):in_addr;
Description: To be documented


[Expand]
function StrToNetAddr(IP:AnsiString):in_addr;
Description: To be documented


[Expand]
function HostToNet(Host:in_addr):in_addr;
Description: To be documented


[Expand]
function NetToHost(Net:in_addr):in_addr;
Description: To be documented


[Expand]
function HostToNet(Host:Longint):Longint;
Description: To be documented


[Expand]
function NetToHost(Net:Longint):Longint;
Description: To be documented


[Expand]
function ShortHostToNet(Host:Word):Word;
Description: To be documented


[Expand]
function ShortNetToHost(Net:Word):Word;
Description: To be documented


[Expand]
function LocalIntToHex(Value:Integer; Digits:LongInt):AnsiString;
Description: To be documented


[Expand]
function HostAddrToStr6(Entry:Tin6_addr):AnsiString;
Description: To be documented


[Expand]
function StrToHostAddr6(IP:String):Tin6_addr; 
Description: To be documented


[Expand]
function NetAddrToStr6(Entry:Tin6_addr):AnsiString;
Description: To be documented


[Expand]
function StrToNetAddr6(IP:AnsiString):TIn6_Addr;
Description: To be documented


Return to Unit Reference