Difference between revisions of "Unit Winsock2"

From Ultibo.org
Jump to: navigation, search
Line 2,055: Line 2,055:
 
----
 
----
  
''To be documented''
+
 
 +
'''Winsock2 socket'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2Socket = class(TListObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: Base Socket classes
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FBoundPort:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FBoundAddress:String;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FReuseAddress:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetFamily(AFamily:Integer); virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetSocketType(ASocketType:Integer); virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetProtocol(AProtocol:Integer); virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetBoundPort(ABoundPort:Word);</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetBoundAddress(const ABoundAddress:String); virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetReuseAddress(AReuseAddress:Boolean);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetLocalPort:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetLocalHost:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetLocalAddress:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetLocalAddresses:TStrings;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetSendSize:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetSendSize(ASize:Integer);</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetReceiveSize:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetReceiveSize(ASize:Integer);</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSendTimeout:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetSendTimeout(ATimeout:Integer);</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetReceiveTimeout:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetReceiveTimeout(ATimeout:Integer);</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetConnectTimeout:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetConnectTimeout(ATimeout:Integer);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FHandle:TSocket;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FFamily:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FSocketType:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FProtocol:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FLastError:LongInt;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetBroadcastAddress:String;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AllocateFamily:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AllocateAddress(var ALength:Integer):PSockAddr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseAddress(var ASockAddr:PSockAddr; var ALength:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AllocateBoundAddress(var ALength:Integer):PSockAddr;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AllocateSocket(ASocketType:Integer):TSocket;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Bind:LongInt;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SockAddrToPort(ASockAddr:PSockAddr; ALength:Integer):Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SockAddrToAddress(ASockAddr:PSockAddr; ALength:Integer):String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function PortToSockAddr(APort:Word; ASockAddr:PSockAddr; ALength:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function AddressToSockAddr(const AAddress:String; var ALength:Integer):PSockAddr;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Handle:TSocket read FHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Family:Integer read FFamily write SetFamily;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SocketType:Integer read FSocketType write SetSocketType;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Protocol:Integer read FProtocol write SetProtocol;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property LastError:LongInt read FLastError;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property BoundPort:Word read FBoundPort write SetBoundPort;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property BoundAddress:String read FBoundAddress write SetBoundAddress;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property ReuseAddress:Boolean read FReuseAddress write SetReuseAddress;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property LocalPort:Word read GetLocalPort;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property LocalHost:String read GetLocalHost;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property LocalAddress:String read GetLocalAddress;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property LocalAddresses:TStrings read GetLocalAddresses;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property SendSize:Integer read GetSendSize write SetSendSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property ReceiveSize:Integer read GetReceiveSize write SetReceiveSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SendTimeout:Integer read GetSendTimeout write SetSendTimeout;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property ReceiveTimeout:Integer read GetReceiveTimeout write SetReceiveTimeout;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property ConnectTimeout:Integer read GetConnectTimeout write SetConnectTimeout;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Connected:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Shutdown:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Disconnect:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CloseSocket:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ResolveHost(const AHost:String):String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ResolveFamily(const AAddress:String):Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ResolveAddress(const AAddress:String):String;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ResolveHostEx(const AHost:String; AFamily:Integer; AAll:Boolean):TStrings;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Winsock2 socket thread'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2SocketThread = class(TThreadEx)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FPrev:TWinsock2SocketThread;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>FNext:TWinsock2SocketThread;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Prev:TWinsock2SocketThread read FPrev write FPrev;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Next:TWinsock2SocketThread read FNext write FNext;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''Winsock2 socket threads''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2SocketThreads = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TCriticalSectionHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FCount:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FFirst:TWinsock2SocketThread;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLast:TWinsock2SocketThread;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetCount:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFirst:TWinsock2SocketThread;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetLast:TWinsock2SocketThread;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Link(AValue:TWinsock2SocketThread):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LinkEx(APrev,AValue:TWinsock2SocketThread):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Unlink(AValue:TWinsock2SocketThread):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Count:Integer read GetCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property First:TWinsock2SocketThread read GetFirst;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Last:TWinsock2SocketThread read GetLast;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Add(AValue:TWinsock2SocketThread):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Remove(AValue:TWinsock2SocketThread):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Insert(APrev,AValue:TWinsock2SocketThread):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Find(AValue:TWinsock2SocketThread):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure Clear; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Winsock2 socket buffer'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2SocketBuffer = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FPrev:TWinsock2SocketBuffer;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>FNext:TWinsock2SocketBuffer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Prev:TWinsock2SocketBuffer read FPrev write FPrev;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Next:TWinsock2SocketBuffer read FNext write FNext;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Winsock2 socket buffers'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2SocketBuffers = class(TObject)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TCriticalSectionHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FCount:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FFirst:TWinsock2SocketBuffer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FLast:TWinsock2SocketBuffer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetCount:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetFirst:TWinsock2SocketBuffer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetLast:TWinsock2SocketBuffer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Link(AValue:TWinsock2SocketBuffer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function LinkEx(APrev,AValue:TWinsock2SocketBuffer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Unlink(AValue:TWinsock2SocketBuffer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Count:Integer read GetCount;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property First:TWinsock2SocketBuffer read GetFirst;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Last:TWinsock2SocketBuffer read GetLast;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Add(AValue:TWinsock2SocketBuffer):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Remove(AValue:TWinsock2SocketBuffer):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Insert(APrev,AValue:TWinsock2SocketBuffer):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Find(AValue:TWinsock2SocketBuffer):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure Clear; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Winsock2 RAW socket'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2RAWSocket = class(TWinsock2Socket)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: Raw Socket (SOCK_RAW) classes
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FBufferSize:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FBroadcastEnabled:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetSocketType(ASocketType:Integer); override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetProtocol(AProtocol:Integer); override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetBufferSize(ABufferSize:Integer);</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetBroadcastEnabled(ABroadcastEnabled:Boolean);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>function RecvFromSocket(ASockAddr:PSockAddr; ASockLen:PInteger; AData:Pointer; ASize:Integer; var ACount:Integer):LongInt; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SendToSocket(ASockAddr:PSockAddr; ASockLen:Integer; AData:Pointer; ASize:Integer; var ACount:Integer):LongInt; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function RecvFromSocketEx(AHandle:THandle; ASockAddr:PSockAddr; ASockLen:PInteger; AData:Pointer; ASize:Integer; var ACount:Integer; var AClosed:Boolean):LongInt; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SendToSocketEx(AHandle:THandle; ASockAddr:PSockAddr; ASockLen:Integer; AData:Pointer; ASize:Integer; var ACount:Integer):LongInt; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property BufferSize:Integer read FBufferSize write SetBufferSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property BroadcastEnabled:Boolean read FBroadcastEnabled write SetBroadcastEnabled;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function RecvData(AData:Pointer; ACount:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SendData(AData:Pointer; ACount:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function BroadcastData(AData:Pointer; ACount:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function RecvDataFrom(var AHost:String; AData:Pointer; ACount:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SendDataTo(const AHost:String; AData:Pointer; ACount:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function BroadcastDataTo(const AAddress:String; AData:Pointer; ACount:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Winsock2 TCP socket'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2TCPSocket = class(TWinsock2Socket)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: Stream Socket (SOCK_STREAM) classes
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FUseNagle:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FUseKeepalive:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FSegmentSize:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FMaxSegmentSize:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetSocketType(ASocketType:Integer); override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetProtocol(AProtocol:Integer); override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetBacklog(ABacklog:Integer);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetUseNagle(AUseNagle:Boolean);</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetUseKeepalive(AUseKeepalive:Boolean);</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetSegmentSize(ASegmentSize:Integer);</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetMaxSegmentSize(AMaxSegmentSize:LongWord);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FBacklog:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Listen(ABacklog:Integer):LongInt;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReadFromSocket(AData:Pointer; ASize:Integer):LongInt;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriteToSocket(AData:Pointer; ASize:Integer):LongInt;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReadFromSocketEx(AData:Pointer; ASize:Integer; var ACount:Integer; var AClosed:Boolean; AWait:Boolean; ATimeout:Integer):LongInt;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriteToSocketEx(AData:Pointer; ASize:Integer; var ACount:Integer; AWait:Boolean; ATimeout:Integer):LongInt;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Backlog:Integer read FBacklog write SetBacklog;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property UseNagle:Boolean read FUseNagle write SetUseNagle;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property UseKeepalive:Boolean read FUseKeepalive write SetUseKeepalive;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property SegmentSize:Integer read FSegmentSize write SetSegmentSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property MaxSegmentSize:LongWord read FMaxSegmentSize write SetMaxSegmentSize;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReadData(AData:Pointer; ACount:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function WriteData(AData:Pointer; ACount:Integer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function ReadAvailable(AData:Pointer; ASize:Integer; var ACount:Integer; var AClosed:Boolean):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Winsock2 UDP socket'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2UDPSocket = class(TWinsock2Socket)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: Datagram Socket (SOCK_DGRAM) classes
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FBufferSize:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FBroadcastEnabled:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetSocketType(ASocketType:Integer); override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetProtocol(AProtocol:Integer); override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetBufferSize(ABufferSize:Integer);</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetBroadcastEnabled(ABroadcastEnabled:Boolean);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>function RecvFromSocket(ASockAddr:PSockAddr; ASockLen:PInteger; AData:Pointer; ASize:Integer; var ACount:Integer):LongInt; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SendToSocket(ASockAddr:PSockAddr; ASockLen:Integer; AData:Pointer; ASize:Integer; var ACount:Integer):LongInt; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function RecvFromSocketEx(AHandle:THandle; ASockAddr:PSockAddr; ASockLen:PInteger; AData:Pointer; ASize:Integer; var ACount:Integer; var AClosed:Boolean):LongInt; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SendToSocketEx(AHandle:THandle; ASockAddr:PSockAddr; ASockLen:Integer; AData:Pointer; ASize:Integer; var ACount:Integer):LongInt; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property BufferSize:Integer read FBufferSize write SetBufferSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property BroadcastEnabled:Boolean read FBroadcastEnabled write SetBroadcastEnabled;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function RecvData(AData:Pointer; ACount:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SendData(AData:Pointer; ACount:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function BroadcastData(AData:Pointer; ACount:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function RecvDataFrom(var AHost:String; var APort:Word; AData:Pointer; ACount:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function SendDataTo(const AHost:String; APort:Word; AData:Pointer; ACount:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function BroadcastDataTo(const AAddress:String; APort:Word; AData:Pointer; ACount:Integer):Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Winsock2 RAW client'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2RAWClient = class(TWinsock2RAWSocket)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: Raw Client classes
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FUseConnect:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FRemoteHost:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FRemoteAddress:String;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetUseConnect(AUseConnect:Boolean);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetFamily(AFamily:Integer); override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetBoundAddress(const ABoundAddress:String); override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetRemoteHost(const ARemoteHost:String);</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetRemoteAddress(const ARemoteAddress:String);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>function AllocateFamily:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AllocateRemoteAddress(var ALength:Integer):PSockAddr;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property UseConnect:Boolean read FUseConnect write SetUseConnect;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property RemoteHost:String read FRemoteHost write SetRemoteHost;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property RemoteAddress:String read FRemoteAddress write SetRemoteAddress;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Connect:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Disconnect:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Winsock2 TCP client'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2TCPClient = class(TWinsock2TCPSocket)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: Stream Client classes
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FRemotePort:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FRemoteHost:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FRemoteAddress:String;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetFamily(AFamily:Integer); override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetBoundAddress(const ABoundAddress:String); override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetRemotePort(ARemotePort:Word);</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetRemoteHost(const ARemoteHost:String);</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetRemoteAddress(const ARemoteAddress:String);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>function AllocateFamily:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AllocateRemoteAddress(var ALength:Integer):PSockAddr;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property RemotePort:Word read FRemotePort write SetRemotePort;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property RemoteHost:String read FRemoteHost write SetRemoteHost;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property RemoteAddress:String read FRemoteAddress write SetRemoteAddress;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Connect:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ConnectEx:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Disconnect:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Winsock2 UDP client'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2UDPClient = class(TWinsock2UDPSocket)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: Datagram Client classes
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FUseConnect:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FRemotePort:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FRemoteHost:String;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FRemoteAddress:String;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetUseConnect(AUseConnect:Boolean);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetFamily(AFamily:Integer); override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetBoundAddress(const ABoundAddress:String); override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetRemotePort(ARemotePort:Word);</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetRemoteHost(const ARemoteHost:String);</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetRemoteAddress(const ARemoteAddress:String);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>function AllocateFamily:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AllocateRemoteAddress(var ALength:Integer):PSockAddr;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property UseConnect:Boolean read FUseConnect write SetUseConnect;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property RemotePort:Word read FRemotePort write SetRemotePort;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property RemoteHost:String read FRemoteHost write SetRemoteHost;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property RemoteAddress:String read FRemoteAddress write SetRemoteAddress;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Connect:Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Disconnect:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Winsock2 TCP server'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2TCPServer = class(TWinsock2TCPSocket)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: Stream Server classes
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create(AListener:TWinsock2TCPListener);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FPeerPort:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FPeerAddress:String;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FListener:TWinsock2TCPListener;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>procedure SetHandle(AHandle:TSocket); virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetLastError(ALastError:LongInt); virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property PeerPort:Word read FPeerPort;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property PeerAddress:String read FPeerAddress;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Listener:TWinsock2TCPListener read FListener;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function Disconnect:Boolean; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Winsock2 TCP server thread'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2TCPServerThread = class(TWinsock2SocketThread)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create(AServer:TWinsock2TCPServer);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FData:TObject;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FServer:TWinsock2TCPServer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>procedure AfterExecution; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure BeforeExecution; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Data:TObject read FData write FData;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Server:TWinsock2TCPServer read FServer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure Execution; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Winsock2 TCP listener thread'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2TCPListenerThread = class(TWinsock2SocketThread)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create(AListener:TWinsock2TCPListener);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FListener:TWinsock2TCPListener;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>procedure AfterExecution; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure BeforeExecution; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Listener:TWinsock2TCPListener read FListener;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure Execution; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Winsock2 TCP server threads'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2TCPServerThreads = class(TWinsock2SocketThreads)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>procedure TerminateThread(AThread:TWinsock2TCPServerThread);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>procedure TerminateAll;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Terminate(AThread:TWinsock2TCPServerThread):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Winsock2 TCP listener'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2TCPListener = class(TWinsock2TCPSocket)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FActive:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FThreads:TWinsock2TCPServerThreads;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FListenerThread:TWinsock2TCPListenerThread;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FOnExecute:TTCPExecuteEvent;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FOnConnect:TTCPConnectEvent;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FOnDisconnect:TTCPDisconnectEvent;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FOnCreateThread:TTCPCreateThreadEvent;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetActive(AActive:Boolean);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>procedure SetLastError(ALastError:LongInt); virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure DoConnect(AThread:TWinsock2TCPServerThread); virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure DoDisconnect(AThread:TWinsock2TCPServerThread); virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function DoExecute(AThread:TWinsock2TCPServerThread):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Active:Boolean read FActive write SetActive;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Threads:TWinsock2TCPServerThreads read FThreads;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property OnExecute:TTCPExecuteEvent read FOnExecute write FOnExecute;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property OnConnect:TTCPConnectEvent read FOnConnect write FOnConnect;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property OnDisconnect:TTCPDisconnectEvent read FOnDisconnect write FOnDisconnect;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property OnCreateThread:TTCPCreateThreadEvent read FOnCreateThread write FOnCreateThread;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Winsock2 UDP server'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2UDPServer = class(TWinsock2UDPSocket)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: Datagrams Server classes
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create(AListener:TWinsock2UDPListener);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FPeerPort:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FPeerAddress:String;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FUseListener:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FListener:TWinsock2UDPListener;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetUseListener(AUseListener:Boolean);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>FBuffer:TWinsock2UDPServerBuffer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetData:Pointer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetSize:Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetCount:Integer; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetBuffer(ABuffer:TWinsock2UDPServerBuffer); virtual;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetLastError(ALastError:LongInt); virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property PeerPort:Word read FPeerPort;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property PeerAddress:String read FPeerAddress;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property UseListener:Boolean read FUseListener write SetUseListener;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Listener:TWinsock2UDPListener read FListener;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Buffer:TWinsock2UDPServerBuffer read FBuffer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property Data:Pointer read GetData;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Size:Integer read GetSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Count:Integer read GetCount;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SendData(AData:Pointer; ACount:Integer):Integer; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SendDataTo(const AHost:String; APort:Word; AData:Pointer; ACount:Integer):Integer; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Winsock2 UDP server thread'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2UDPServerThread = class(TWinsock2SocketThread)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create(AServer:TWinsock2UDPServer);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TCriticalSectionHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FActive:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FData:TObject;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FServer:TWinsock2UDPServer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetActive:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetActive(AActive:Boolean);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>procedure AfterExecution; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure BeforeExecution; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Active:Boolean read GetActive write SetActive;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Data:TObject read FData write FData;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Server:TWinsock2UDPServer read FServer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure Execution; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Winsock2 UDP listener thread'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2UDPListenerThread = class(TWinsock2SocketThread)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create(AListener:TWinsock2UDPListener);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FListener:TWinsock2UDPListener;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>procedure AfterExecution; override;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure BeforeExecution; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Listener:TWinsock2UDPListener read FListener;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure Execution; override;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''Winsock2 UDP server threads'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2UDPServerThreads = class(TWinsock2SocketThreads)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create(AListener:TWinsock2UDPListener);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FMin:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FMax:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FListener:TWinsock2UDPListener;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetMin:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetMin(AMin:Integer);</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetMax:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetMax(AMax:Integer);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure CreateThreads;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CreateThread(AForce:Boolean):TWinsock2UDPServerThread;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure TerminateThread(AThread:TWinsock2UDPServerThread);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Min:Integer read GetMin write SetMin;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Max:Integer read GetMax write SetMax;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetThread:TWinsock2UDPServerThread;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure ReleaseThread(AThread:TWinsock2UDPServerThread);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure TerminateAll;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Terminate(AThread:TWinsock2UDPServerThread):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Winsock2 UDP server buffer'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2UDPServerBuffer = class(TWinsock2SocketBuffer)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create(ASize:Integer);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TCriticalSectionHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FActive:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FData:Pointer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FSize:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FCount:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetActive:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetActive(AActive:Boolean);</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetCount(ACount:Integer);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Active:Boolean read GetActive write SetActive;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Data:Pointer read FData;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Size:Integer read FSize;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Count:Integer read FCount write SetCount;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Winsock2 UDP server buffers'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2UDPServerBuffers = class(TWinsock2SocketBuffers)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create(AListener:TWinsock2UDPListener);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FMin:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FMax:Integer;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FListener:TWinsock2UDPListener;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetMin:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetMin(AMin:Integer);</code>
 +
| &nbsp;
 +
|-
 +
| <code>function GetMax:Integer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetMax(AMax:Integer);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure CreateBuffers;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CreateBuffer(AForce:Boolean):TWinsock2UDPServerBuffer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure DeleteBuffer(ABuffer:TWinsock2UDPServerBuffer);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Min:Integer read GetMin write SetMin;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Max:Integer read GetMax write SetMax;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function GetBuffer:TWinsock2UDPServerBuffer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure ReleaseBuffer(ABuffer:TWinsock2UDPServerBuffer);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure DeleteAll;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function Delete(ABuffer:TWinsock2UDPServerBuffer):Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Winsock2 UDP listener'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>TWinsock2UDPListener = class(TWinsock2UDPSocket)</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>constructor Create;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>destructor Destroy; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
 +
|-
 +
| <code>FLock:TCriticalSectionHandle;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FActive:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FUseListener:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FThreads:TWinsock2UDPServerThreads;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FBuffers:TWinsock2UDPServerBuffers;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FListenerThread:TWinsock2UDPListenerThread;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>FOnExecute:TUDPExecuteEvent;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FOnCreateThread:TUDPCreateThreadEvent;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FOnCreateBuffer:TUDPCreateBufferEvent;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function AcquireLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function ReleaseLock:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>procedure SetActive(AActive:Boolean);</code>
 +
| &nbsp;
 +
|-
 +
| <code>procedure SetUseListener(AUseListener:Boolean);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
 +
|-
 +
| <code>procedure SetLastError(ALastError:LongInt); virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function DoExecute(AThread:TWinsock2UDPServerThread):Boolean; virtual;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>function SendToSocketEx(AHandle:THandle; ASockAddr:PSockAddr; ASockLen:Integer; AData:Pointer; ASize:Integer; var ACount:Integer):LongInt; override;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
 +
|-
 +
| <code>property Active:Boolean read FActive write SetActive;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property UseListener:Boolean read FUseListener write SetUseListener;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Threads:TWinsock2UDPServerThreads read FThreads;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property Buffers:TWinsock2UDPServerBuffers read FBuffers;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>property OnExecute:TUDPExecuteEvent read FOnExecute write FOnExecute;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property OnCreateThread:TUDPCreateThreadEvent read FOnCreateThread write FOnCreateThread;</code>
 +
| &nbsp;
 +
|-
 +
| <code>property OnCreateBuffer:TUDPCreateBufferEvent read FOnCreateBuffer write FOnCreateBuffer;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
  
 
=== Public variables ===
 
=== Public variables ===

Revision as of 04:30, 23 March 2017

Return to Unit Reference


Description


Ultibo Winsock2 interface unit

Notes:

  • All BSD/Winsock 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.

Constants



[Expand]
Winsock2 specific constants WINSOCK_*


[Expand]
IP protocol constants IPPROTO_*


[Expand]
IP port constants IPPORT_*


[Expand]
IP option constants IP_*


[Expand]
Socket type constants SOCK_*


[Expand]
Socket option constants SO_*


[Expand]
TCP option constants TCP_*


[Expand]
UDP option constants UDP_*


[Expand]
Address family constants AF_*


[Expand]
Protocol family constants PF_*


[Expand]
Message flag options MSG_*


[Expand]
FD option constants FD_*


[Expand]
Socket error constants WSAE*


[Expand]
Condition function value constants CF_*


[Expand]
Shutdown option constants SD_*


[Expand]
Socket group constants SG_*


[Expand]
Provider flag constants PFL_*


[Expand]
Service flag constants XP1_*


[Expand]
Join leaf option constants JL_*


[Expand]
Socket flag constants WSA_FLAG_*


[Expand]
Socket IOC option constants IOC_*


[Expand]
SIO option constants SIO_*


[Expand]
Name Space constants NS_*


[Expand]
Resolution flag constants RES_*


[Expand]
Service type value constants SERVICE_TYPE_*


[Expand]
LUP option constants LUP_*


[Expand]
Address info flag constants AI_*


[Expand]
Name info flag constants NI_*


Type definitions


See globalsock.pas

Class definitions



Winsock2 socket

[Expand]

TWinsock2Socket = class(TListObject)

Winsock2 socket thread

[Expand]

TWinsock2SocketThread = class(TThreadEx)

Winsock2 socket threads

[Expand]

TWinsock2SocketThreads = class(TObject)

Winsock2 socket buffer

[Expand]

TWinsock2SocketBuffer = class(TObject)

Winsock2 socket buffers

[Expand]

TWinsock2SocketBuffers = class(TObject)

Winsock2 RAW socket

[Expand]

TWinsock2RAWSocket = class(TWinsock2Socket)

Winsock2 TCP socket

[Expand]

TWinsock2TCPSocket = class(TWinsock2Socket)

Winsock2 UDP socket

[Expand]

TWinsock2UDPSocket = class(TWinsock2Socket)

Winsock2 RAW client

[Expand]

TWinsock2RAWClient = class(TWinsock2RAWSocket)

Winsock2 TCP client

[Expand]

TWinsock2TCPClient = class(TWinsock2TCPSocket)

Winsock2 UDP client

[Expand]

TWinsock2UDPClient = class(TWinsock2UDPSocket)

Winsock2 TCP server

[Expand]

TWinsock2TCPServer = class(TWinsock2TCPSocket)

Winsock2 TCP server thread

[Expand]

TWinsock2TCPServerThread = class(TWinsock2SocketThread)

Winsock2 TCP listener thread

[Expand]

TWinsock2TCPListenerThread = class(TWinsock2SocketThread)

Winsock2 TCP server threads

[Expand]

TWinsock2TCPServerThreads = class(TWinsock2SocketThreads)

Winsock2 TCP listener

[Expand]

TWinsock2TCPListener = class(TWinsock2TCPSocket)

Winsock2 UDP server

[Expand]

TWinsock2UDPServer = class(TWinsock2UDPSocket)

Winsock2 UDP server thread

[Expand]

TWinsock2UDPServerThread = class(TWinsock2SocketThread)

Winsock2 UDP listener thread

[Expand]

TWinsock2UDPListenerThread = class(TWinsock2SocketThread)

Winsock2 UDP server threads

[Expand]

TWinsock2UDPServerThreads = class(TWinsock2SocketThreads)

Winsock2 UDP server buffer

[Expand]

TWinsock2UDPServerBuffer = class(TWinsock2SocketBuffer)

Winsock2 UDP server buffers

[Expand]

TWinsock2UDPServerBuffers = class(TWinsock2SocketBuffers)

Winsock2 UDP listener

[Expand]

TWinsock2UDPListener = class(TWinsock2UDPSocket)


Public variables


None defined

Function declarations



Initialization functions

[Expand]
procedure WS2Init;
Description: To be documented


[Expand]
function WS2Start:Boolean;
Description: To be documented


[Expand]
function WS2Stop:Boolean;
Description: To be documented


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


Winsock2 functions

[Expand]
function accept( const s: TSocket; addr: PSockAddr; addrlen: PLongint ): TSocket;
Description: To be documented


[Expand]
function accept( const s: TSocket; addr: PSockAddr; var addrlen: Longint ): TSocket;
Description: To be documented


[Expand]
function bind( const s: TSocket; addr: PSockAddr; namelen: Longint ): Longint;
Description: To be documented


[Expand]
function bind( const s: TSocket; var addr: TSockAddr; namelen: Longint ): Longint;
Description: To be documented


[Expand]
function closesocket( const s: TSocket ): Longint;
Description: To be documented


[Expand]
function connect( const s: TSocket; name: PSockAddr; namelen: Longint): Longint;
Description: To be documented


[Expand]
function connect( const s: TSocket; var name: TSockAddr; namelen: Longint): Longint;
Description: To be documented


[Expand]
function ioctlsocket( const s: TSocket; cmd: Longint; var arg: u_long ): Longint;
Description: To be documented


[Expand]
function ioctlsocket( const s: TSocket; cmd: Longint; argp: pu_long ): Longint;
Description: To be documented


[Expand]
function getpeername( const s: TSocket; var name: TSockAddr; var namelen: Longint ): Longint;
Description: To be documented


[Expand]
function getsockname( const s: TSocket; var name: TSockAddr; var namelen: Longint ): Longint;
Description: To be documented


[Expand]
function getsockopt( const s: TSocket; const level, optname: Longint; optval: PChar; var optlen: Longint ): Longint;
Description: To be documented


[Expand]
function getsockopt( const s: TSocket; const level, optname: Longint; optval: Pointer; var optlen: Longint ): Longint;
Description: To be documented


[Expand]
function getsockopt( const s: TSocket; const level, optname: Longint; var optval; var optlen: Longint ): Longint;
Description: To be documented


[Expand]
function htonl(hostlong: u_long): u_long;
Description: To be documented


[Expand]
function htons(hostshort: u_short): u_short;
Description: To be documented


[Expand]
function inet_addr(cp: PChar): u_long;
Description: To be documented


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


[Expand]
function listen(s: TSocket; backlog: Longint): Longint;
Description: To be documented


[Expand]
function ntohl(netlong: u_long): u_long;
Description: To be documented


[Expand]
function ntohs(netshort: u_short): u_short;
Description: To be documented


[Expand]
function recv(s: TSocket; var Buf; len, flags: Longint): Longint;
Description: To be documented


[Expand]
function recv(s: TSocket; Buf: PChar; len, flags: Longint): Longint;
Description: To be documented


[Expand]
function recv(s: TSocket; Buf: Pointer; len, flags: Longint): Longint;
Description: To be documented


[Expand]
function recvfrom(s: TSocket; Buf: PChar; len, flags: Longint; from: PSockAddr; fromlen: PLongint): Longint;
Description: To be documented


[Expand]
function recvfrom(s: TSocket; Buf: Pointer; len, flags: Longint; from: PSockAddr; fromlen: PLongint): Longint;
Description: To be documented


[Expand]
function recvfrom(s: TSocket; var Buf; len, flags: Longint; var from: TSockAddr; var fromlen: Longint): Longint;
Description: To be documented


[Expand]
function select(nfds: Longint; readfds, writefds, exceptfds: PFDSet; timeout: PTimeVal): Longint;
Description: To be documented


[Expand]
function send(s: TSocket; var Buf; len, flags: Longint): Longint;
Description: To be documented


[Expand]
function send(s: TSocket; Buf: PChar; len, flags: Longint): Longint;
Description: To be documented


[Expand]
function send(s: TSocket; Buf: Pointer; len, flags: Longint): Longint;
Description: To be documented


[Expand]
function sendto(s: TSocket; var Buf; len, flags: Longint; var addrto: TSockAddr; tolen: Longint): Longint;
Description: To be documented


[Expand]
function sendto(s: TSocket; Buf: PChar; len, flags: Longint; addrto: PSockAddr; tolen: Longint): Longint;
Description: To be documented


[Expand]
function sendto(s: TSocket; Buf: Pointer; len, flags: Longint; addrto: PSockAddr; tolen: Longint): Longint;
Description: To be documented


[Expand]
function setsockopt(s: TSocket; level, optname: Longint; const optval; optlen: Longint): Longint;
Description: To be documented


[Expand]
function setsockopt(s: TSocket; level, optname: Longint; optval: PChar; optlen: Longint): Longint;
Description: To be documented


[Expand]
function setsockopt(s: TSocket; level, optname: Longint; optval: Pointer; optlen: Longint): Longint;
Description: To be documented


[Expand]
function shutdown(s: TSocket; how: Longint): Longint;
Description: To be documented


[Expand]
function socket(af, struct, protocol: Longint): TSocket;
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 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(pNodeName, pServiceName: PChar; pHints: PAddrInfo; var ppResult: PAddrInfo): LongInt;
Description: To be documented


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


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


[Expand]
function WSAStartup(wVersionRequired: word; var WSData: TWSAData): Longint;
Description: To be documented


[Expand]
function WSACleanup: Longint;
Description: To be documented


[Expand]
procedure WSASetLastError(iError: Longint);
Description: To be documented


[Expand]
function WSAGetLastError: Longint;
Description: To be documented


[Expand]
function __WSAFDIsSet(s: TSOcket; var FDSet: TFDSet): Bool;
Description: To be documented


[Expand]
function inet_pton(Family: Longint; pszAddrString: PChar; pAddrBuf: Pointer): Longint;
Description: To be documented


[Expand]
function InetPtonA(Family: Longint; pszAddrString: PChar; pAddrBuf: Pointer): Longint;
Description: To be documented


[Expand]
function InetPtonW(Family: Longint; pszAddrString: PWideChar; pAddrBuf: Pointer): Longint;
Description: To be documented


[Expand]
function inet_ntop(Family: Longint; pAddr: Pointer; pStringBuf: PChar; StringBufSize: Longint): PChar;
Description: To be documented


[Expand]
function InetNtopA(Family: Longint; pAddr: Pointer; pStringBuf: PChar; StringBufSize: Longint): PChar;
Description: To be documented


[Expand]
function InetNtopW(Family: Longint; pAddr: Pointer; pStringBuf: PWideChar; StringBufSize: Longint): PWideChar;
Description: To be documented


[Expand]
function WSAhtonl( s : TSocket; hostlong : u_long; var lpnetlong : DWORD ): Longint;
Description: To be documented


[Expand]
function WSAhtons( s : TSocket; hostshort : u_short; var lpnetshort : WORD ): Longint;
Description: To be documented


[Expand]
function WSANtohl( s : TSocket; netlong : u_long; var lphostlong : DWORD ): Longint;
Description: To be documented


[Expand]
function WSANtohs( s : TSocket; netshort : u_short; var lphostshort : WORD ): Longint;
Description: To be documented


[Expand]
function WSAMakeSyncReply(Buflen, Error: Word): Longint;
Description: To be documented


[Expand]
function WSAMakeSelectReply(Event, Error: Word): Longint;
Description: To be documented


[Expand]
function WSAGetAsyncBuflen(Param: Longint): Word;
Description: To be documented


[Expand]
function WSAGetAsyncError(Param: Longint): Word;
Description: To be documented


[Expand]
function WSAGetSelectEvent(Param: Longint): Word;
Description: To be documented


[Expand]
function WSAGetSelectError(Param: Longint): Word;
Description: To be documented


[Expand]
procedure FD_CLR(Socket: TSocket; var FDSet: TFDSet);
Description: To be documented


[Expand]
function FD_ISSET(Socket: TSocket; var FDSet: TFDSet): Boolean;
Description: To be documented


[Expand]
procedure FD_SET(Socket: TSocket; var FDSet: TFDSet);
Description: To be documented


[Expand]
procedure FD_ZERO(var FDSet: TFDSet);
Description: To be documented


Winsock2 undocumented functions

[Expand]
function WsControl(Proto:DWORD; Action:DWORD; pRequestInfo:Pointer; var pcbRequestInfoLen:DWORD; pResponseInfo:Pointer; var pcbResponseInfoLen:DWORD):Integer;
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


Winsock2 enhanced functions

[Expand]
function WsControlEx(Proto:DWORD; Action:DWORD; pRequestInfo:Pointer; var pcbRequestInfoLen:DWORD; pResponseInfo:Pointer; var pcbResponseInfoLen:DWORD):Integer;
Description: To be documented


Return to Unit Reference