Difference between revisions of "Unit Sockets"
Line 126: | Line 126: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <div style="font-size: 14px; padding-left: 12px;">'''Socket error''' <code> Esock*, EAI_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 209: | Line 209: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 shutdown option | + | <div style="font-size: 14px; padding-left: 12px;">'''Socket shutdown option''' <code> SHUT_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 226: | Line 226: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 249: | Line 249: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 input/output | + | <div style="font-size: 14px; padding-left: 12px;">'''Socket input/output''' <code> S_IN* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 265: | Line 265: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 368: | Line 368: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 468: | Line 468: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 533: | Line 533: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 646: | Line 646: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 688: | Line 688: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 820: | Line 820: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 851: | Line 851: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 862: | Line 862: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 889: | Line 889: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 939: | Line 939: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 1,167: | Line 1,167: | ||
|} | |} | ||
− | '''Socket address | + | '''Socket address''' |
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> |
Revision as of 03:57, 27 March 2017
Return to Unit Reference
Contents
[hide]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
SOCKETS_*
Esock*, EAI_*
SHUT_*
SOCK_*
S_IN*
AF_*
PF_*
IPPROTO_*
IPPORT_*
IP_*
SO_*
TCP_*
UDP_*
MSG_*
AI_*
NI_*
Type definitions
Sockets device event
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
Address information
PAddrInfo = GlobalSock.PAddrInfo;
|
|
TAddrInfo = GlobalSock.TAddrInfo;
|
Public variables
None defined
Function declarations
Initialization functions
Sockets functions
function Send(Sock:Longint; const Buf; BufLen,Flags:Longint):Longint;
function SendTo(Sock:Longint; const Buf; BufLen,Flags:Longint; var Addr; AddrLen : Longint):Longint;
function Recv(Sock:Longint; var Buf; BufLen,Flags:Longint):Longint;
function RecvFrom(Sock : Longint; var Buf; Buflen,Flags : Longint; var Addr; var AddrLen : longint) : longint;
function Connect(Sock:Longint; const Addr; Addrlen:Longint):Boolean;
function Bind(Sock:Longint; const Addr; AddrLen:Longint):Boolean;
function Accept(Sock:Longint; var Addr; var Addrlen:Longint):Longint;
function GetSocketName(Sock:Longint; var Addr; var Addrlen:Longint):Longint;
function GetPeerName(Sock:Longint; var Addr; var Addrlen:Longint):Longint;
function GetSocketOptions(Sock,Level,OptName:Longint; var OptVal; var optlen:longint):Longint;
function SetSocketOptions(Sock,Level,OptName:Longint; const OptVal; optlen:longint):Longint;
function SocketPair(Domain,SocketType,Protocol:Longint; var Pair:TSockArray):Longint;
function Inet_Pton(family: Longint; Source: PChar; Dest: Pointer): Longint;
function Inet_Ntop(family: Longint; Source: Pointer; Dest: PChar; Size: Longint): PChar;
function GetHostByAddr(addr: Pointer; len, family: Longint): PHostEnt;
function GetNetByAddr(addr: Pointer; len, Struct: Integer): PNetEnt;
function GetServByPort(port: Longint; proto: PChar): PServEnt;
function GetAddrInfo(HostName, ServName: PChar; Hints: PAddrInfo; var Addr: PAddrInfo): Longint;
function GetNameInfo(sa: PSockAddr; salen: Longint; host: PChar; hostlen: DWORD; serv: PChar; servlen: DWORD; flags: Longint): Longint;
RTL sockets functions
function fpsocket(domain:cint; xtype:cint; protocol: cint):cint;
function fpsend(s:cint; msg:pointer; len:size_t; flags:cint):ssize_t;
function fpsendto(s:cint; msg:pointer; len:size_t; flags:cint; tox :psockaddr; tolen: tsocklen):ssize_t;
function fprecv(s:cint; buf: pointer; len: size_t; flags: cint):ssize_t;
function fprecvfrom(s:cint; buf: pointer; len: size_t; flags: cint; from : psockaddr; fromlen : psocklen):ssize_t;
function fpconnect(s:cint; name : psockaddr; namelen : tsocklen):cint;
function fpbind(s:cint; addrx : psockaddr; addrlen : tsocklen):cint;
function fpaccept(s:cint; addrx : psockaddr; addrlen : psocklen):cint;
function fpgetsockname(s:cint; name : psockaddr; namelen : psocklen):cint;
function fpgetpeername(s:cint; name : psockaddr; namelen : psocklen):cint;
function fpgetsockopt(s:cint; level:cint; optname:cint; optval:pointer; optlen : psocklen):cint;
function fpsetsockopt(s:cint; level:cint; optname:cint; optval:pointer; optlen :tsocklen):cint;
function fpsocketpair(d:cint; xtype:cint; protocol:cint; sv:pcint):cint;
RTL File/Text sockets functions
function fpRead(Handle:LongInt; var BufPtr; Size:DWORD):DWORD;
function fpWrite(Handle:LongInt; var BufPtr; Size:DWORD):DWORD;
procedure Sock2Text(Sock:Longint; Var SockIn,SockOut:Text);
function DoAccept(Sock:longint; var addr:TInetSockAddr):longint;
function Accept(Sock:longint; var addr:TInetSockAddr; var SockIn,SockOut:File):Boolean;
function Accept(Sock:longint; var addr:TInetSockAddr; var SockIn,SockOut:text):Boolean;
function DoConnect(Sock:longint; const addr:TInetSockAddr):Boolean;
function Connect(Sock:longint; const addr:TInetSockAddr; var SockIn,SockOut:text):Boolean;
function Connect(Sock:longint; const addr:TInetSockAddr; var SockIn,SockOut:file):Boolean;
Sockets helper functions
procedure SocketsNetworkDeviceAdd(Event:PSocketsDeviceEvent);
function SocketsNetworkDeviceRemove(Network:PNetworkDevice):LongWord;
function SocketsNetworkDeviceEnum(Network:PNetworkDevice; Data:Pointer):LongWord;
function SocketsNetworkDeviceNotify(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;
RTL sockets helper functions
function LocalIntToHex(Value:Integer; Digits:LongInt):AnsiString;
Return to Unit Reference