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