<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://ultibo.org/mediawiki_ultibo_org/index.php?action=history&amp;feed=atom&amp;title=TUDPProtocol</id>
		<title>TUDPProtocol - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://ultibo.org/mediawiki_ultibo_org/index.php?action=history&amp;feed=atom&amp;title=TUDPProtocol"/>
		<link rel="alternate" type="text/html" href="https://ultibo.org/mediawiki_ultibo_org/index.php?title=TUDPProtocol&amp;action=history"/>
		<updated>2026-04-06T00:23:56Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.26.1</generator>

	<entry>
		<id>https://ultibo.org/mediawiki_ultibo_org/index.php?title=TUDPProtocol&amp;diff=4382&amp;oldid=prev</id>
		<title>Ultibo at 01:32, 31 May 2018</title>
		<link rel="alternate" type="text/html" href="https://ultibo.org/mediawiki_ultibo_org/index.php?title=TUDPProtocol&amp;diff=4382&amp;oldid=prev"/>
				<updated>2018-05-31T01:32:30Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&#039;diff diff-contentalign-left&#039;&gt;
				&lt;col class=&#039;diff-marker&#039; /&gt;
				&lt;col class=&#039;diff-content&#039; /&gt;
				&lt;col class=&#039;diff-marker&#039; /&gt;
				&lt;col class=&#039;diff-content&#039; /&gt;
				&lt;tr style=&#039;vertical-align: top;&#039; lang=&#039;en&#039;&gt;
				&lt;td colspan=&#039;2&#039; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&#039;2&#039; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 01:32, 31 May 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot; &gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Class definitions ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Class definitions ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ultibo</name></author>	</entry>

	<entry>
		<id>https://ultibo.org/mediawiki_ultibo_org/index.php?title=TUDPProtocol&amp;diff=4381&amp;oldid=prev</id>
		<title>Ultibo: Created page with &quot;Return to Unit UDP   __TOC__  === Description === ----  &#039;&#039;To be documented&#039;&#039;  === Class definitions === ----  &lt;div class=&quot;toccolours mw-collapsible mw-collapsed&quot;...&quot;</title>
		<link rel="alternate" type="text/html" href="https://ultibo.org/mediawiki_ultibo_org/index.php?title=TUDPProtocol&amp;diff=4381&amp;oldid=prev"/>
				<updated>2018-05-31T01:31:40Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;Return to &lt;a href=&quot;/wiki/Unit_UDP&quot; title=&quot;Unit UDP&quot;&gt;Unit UDP&lt;/a&gt;   __TOC__  === Description === ----  &amp;#039;&amp;#039;To be documented&amp;#039;&amp;#039;  === Class definitions === ----  &amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Return to [[Unit_UDP|Unit UDP]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;To be documented&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Class definitions ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;TUDPProtocol = class(TNetworkProtocol)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;constructor Create(AManager:TProtocolManager; const AName:String);&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;width: 50%;&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;destructor Destroy; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;div style=&amp;quot;font-family: monospace,courier;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;private&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FNextPort:Word;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;div style=&amp;quot;font-family: monospace,courier;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;private&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function PacketHandler(AHandle:THandle; ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;div style=&amp;quot;font-family: monospace,courier;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;protected&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function OpenPort(ASocket:TProtocolSocket; APort:Word):Boolean; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function ClosePort(ASocket:TProtocolSocket):Boolean; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function FindPort(APort:Word; AWrite,ALock:Boolean):TProtocolPort; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function SelectCheck(ASource,ADest:PFDSet; ACode:Integer):Integer; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function SelectWait(ASocket:TProtocolSocket; ACode:Integer; ATimeout:LongWord):Integer; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function SendPacket(ASocket:TProtocolSocket; ASource,ADest:Pointer; ASourcePort,ADestPort:Word; APacket:PPacketFragment; ASize,AFlags:Integer):Integer; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;div style=&amp;quot;font-family: monospace,courier;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;public&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function Accept(ASocket:TProtocolSocket; ASockAddr:PSockAddr; AAddrLength:PInteger):TProtocolSocket; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function Bind(ASocket:TProtocolSocket; var ASockAddr:TSockAddr; AAddrLength:Integer):Integer; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function CloseSocket(ASocket:TProtocolSocket):Integer; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function Connect(ASocket:TProtocolSocket; var ASockAddr:TSockAddr; AAddrLength:Integer):Integer; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function IoctlSocket(ASocket:TProtocolSocket; ACmd:DWORD; var AArg:u_long):Integer; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function GetPeerName(ASocket:TProtocolSocket; var ASockAddr:TSockAddr; var AAddrLength:Integer):Integer; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function GetSockName(ASocket:TProtocolSocket; var ASockAddr:TSockAddr; var AAddrLength:Integer):Integer; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function GetSockOpt(ASocket:TProtocolSocket; ALevel,AOptName:Integer; AOptValue:PChar; var AOptLength:Integer):Integer; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function Listen(ASocket:TProtocolSocket; ABacklog:Integer):Integer; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function Recv(ASocket:TProtocolSocket; var ABuffer; ALength,AFlags:Integer):Integer; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function RecvFrom(ASocket:TProtocolSocket; var ABuffer; ALength,AFlags:Integer; var AFromAddr:TSockAddr; var AFromLength:Integer):Integer; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function Select(ANfds:Integer; AReadfds,AWritefds,AExceptfds:PFDSet; ATimeout:PTimeVal):LongInt; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function Send(ASocket:TProtocolSocket; var ABuffer; ALength,AFlags:Integer):Integer; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function SendTo(ASocket:TProtocolSocket; var ABuffer; ALength,AFlags:Integer; var AToAddr:TSockAddr; AToLength:Integer):Integer; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function SetSockOpt(ASocket:TProtocolSocket; ALevel,AOptName:Integer; AOptValue:PChar; AOptLength:Integer):Integer; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function Shutdown(ASocket:TProtocolSocket; AHow:Integer):Integer; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function Socket(AFamily,AStruct,AProtocol:Integer):TProtocolSocket; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function AddTransport(ATransport:TNetworkTransport):Boolean; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function RemoveTransport(ATransport:TNetworkTransport):Boolean; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function FindSocket(AFamily,AStruct,AProtocol:Word; ALocalAddress,ARemoteAddress:Pointer; ALocalPort,ARemotePort:Word; ABroadcast,AListen,ALock:Boolean; AState:LongWord):TProtocolSocket; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;procedure FlushSockets(All:Boolean); override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function StartProtocol:Boolean; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function StopProtocol:Boolean; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;function ProcessProtocol:Boolean; override;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Function declarations ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;constructor TUDPProtocol.Create(AManager:TProtocolManager; const AName:String);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; To be documented&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;destructor TUDPProtocol.Destroy;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; To be documented&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.PacketHandler(AHandle:THandle; ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Process a packet received by a Transport&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Handle&lt;br /&gt;
| The Handle of the Protocol Transport the packet was received from&lt;br /&gt;
|-&lt;br /&gt;
! Source&lt;br /&gt;
| The source address of the received packet (Set by Transport)&lt;br /&gt;
|-&lt;br /&gt;
! Dest&lt;br /&gt;
| The destination address of the received packet (Set by Transport)&lt;br /&gt;
|-&lt;br /&gt;
! Packet&lt;br /&gt;
| The received packet (The complete packet including Transport header)&lt;br /&gt;
|-&lt;br /&gt;
! Size&lt;br /&gt;
| The size of the received packet in bytes&lt;br /&gt;
|-&lt;br /&gt;
! Broadcast&lt;br /&gt;
| True if the destination address is a broadcast address&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.OpenPort(ASocket:TProtocolSocket; APort:Word):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; To be documented&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the Socket lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.ClosePort(ASocket:TProtocolSocket):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; To be documented&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the Socket lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.FindPort(APort:Word; AWrite,ALock:Boolean):TProtocolPort;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Find a protocol port for the specified port number&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Port&lt;br /&gt;
| The port number to find&lt;br /&gt;
|-&lt;br /&gt;
! Write&lt;br /&gt;
| If True then use the writer lock&lt;br /&gt;
|-&lt;br /&gt;
! Lock&lt;br /&gt;
| If True then lock the found entry before returning&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.SelectCheck(ASource,ADest:PFDSet; ACode:Integer):Integer;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; To be documented&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Source&lt;br /&gt;
| Source is the working set to check&lt;br /&gt;
|-&lt;br /&gt;
! Dest&lt;br /&gt;
| Dest is the set passed to Select&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.SelectWait(ASocket:TProtocolSocket; ACode:Integer; ATimeout:LongWord):Integer;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; To be documented&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Socket&lt;br /&gt;
| Socket is the single socket to check&lt;br /&gt;
|-&lt;br /&gt;
! Code&lt;br /&gt;
| Code is the type of check&lt;br /&gt;
|-&lt;br /&gt;
! Timeout&lt;br /&gt;
| Timeout is how long to wait&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.SendPacket(ASocket:TProtocolSocket; ASource,ADest:Pointer; ASourcePort,ADestPort:Word; APacket:PPacketFragment; ASize,AFlags:Integer):Integer;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Send a Packet by adding the Protocol Header and other details to the Data&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Socket&lt;br /&gt;
| The socket to use for sending the packet&lt;br /&gt;
|-&lt;br /&gt;
! Source&lt;br /&gt;
| The source address of the packet (Host Order)&lt;br /&gt;
|-&lt;br /&gt;
! Dest&lt;br /&gt;
| The destination address of the packet (Host Order)&lt;br /&gt;
|-&lt;br /&gt;
! SourcePort&lt;br /&gt;
| The source port of the packet (Host Order)&lt;br /&gt;
|-&lt;br /&gt;
! DestPort&lt;br /&gt;
| The destination port of the packet (Host Order)&lt;br /&gt;
|-&lt;br /&gt;
! Packet&lt;br /&gt;
| The packet data to send&lt;br /&gt;
|-&lt;br /&gt;
! Size&lt;br /&gt;
| The size of the packet data in bytes&lt;br /&gt;
|-&lt;br /&gt;
! Flags&lt;br /&gt;
| Any protocol specific flags for sending&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the Socket lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.Accept(ASocket:TProtocolSocket; ASockAddr:PSockAddr; AAddrLength:PInteger):TProtocolSocket;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; BSD compatible Accept&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Socket&lt;br /&gt;
| The socket to accept from&lt;br /&gt;
|-&lt;br /&gt;
! SockAddr&lt;br /&gt;
| The socket address (Network Order)&lt;br /&gt;
|-&lt;br /&gt;
! AddrLength&lt;br /&gt;
| The socket address length&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the Socket lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.Bind(ASocket:TProtocolSocket; var ASockAddr:TSockAddr; AAddrLength:Integer):Integer;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; BSD compatible Bind&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Socket&lt;br /&gt;
| The socket to bind&lt;br /&gt;
|-&lt;br /&gt;
! SockAddr&lt;br /&gt;
| The socket address (Network Order)&lt;br /&gt;
|-&lt;br /&gt;
! AddrLength&lt;br /&gt;
| The socket address length&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Sets the LocalAddress/Port for future Sends and Receives, Address can be specified as INADDR_ANY which allows Listening or auto assignment. If Port is IPPORT_ANY then a dynamic Port will be assigned.&lt;br /&gt;
Caller must hold the Socket lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.CloseSocket(ASocket:TProtocolSocket):Integer;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; BSD compatible Close Socket&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Socket&lt;br /&gt;
| The socket to close&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Closes and removes the socket, does not perform Linger&lt;br /&gt;
Caller must hold the Socket lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.Connect(ASocket:TProtocolSocket; var ASockAddr:TSockAddr; AAddrLength:Integer):Integer;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; BSD compatible Connect&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Socket&lt;br /&gt;
| The socket to connect&lt;br /&gt;
|-&lt;br /&gt;
! SockAddr&lt;br /&gt;
| The socket address (Network Order)&lt;br /&gt;
|-&lt;br /&gt;
! AddrLength&lt;br /&gt;
| The socket address length&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Sets the RemoteAddress/Port of future Sends and Receives, if Bind has not been called then the LocalAddress/Port will be set appropriately as well based on the route to the RemoteAddress.&lt;br /&gt;
Caller must hold the Socket lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.IoctlSocket(ASocket:TProtocolSocket; ACmd:DWORD; var AArg:u_long):Integer;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; BSD compatible IO Control Socket&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Socket&lt;br /&gt;
| The socket to control&lt;br /&gt;
|-&lt;br /&gt;
! Cmd&lt;br /&gt;
| The socket command&lt;br /&gt;
|-&lt;br /&gt;
! Arg&lt;br /&gt;
| The command argument&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the Socket lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.GetPeerName(ASocket:TProtocolSocket; var ASockAddr:TSockAddr; var AAddrLength:Integer):Integer;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; BSD compatible Get Peer Name (Remote)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Socket&lt;br /&gt;
| The socket to get from&lt;br /&gt;
|-&lt;br /&gt;
! SockAddr&lt;br /&gt;
| The socket address (Network Order)&lt;br /&gt;
|-&lt;br /&gt;
! AddrLength&lt;br /&gt;
| The socket address length&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the Socket lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.GetSockName(ASocket:TProtocolSocket; var ASockAddr:TSockAddr; var AAddrLength:Integer):Integer;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; BSD compatible Get Sock Name (Local)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Socket&lt;br /&gt;
| The socket to get from&lt;br /&gt;
|-&lt;br /&gt;
! SockAddr&lt;br /&gt;
| The socket address (Network Order)&lt;br /&gt;
|-&lt;br /&gt;
! AddrLength&lt;br /&gt;
| The socket address length&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the Socket lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.GetSockOpt(ASocket:TProtocolSocket; ALevel,AOptName:Integer; AOptValue:PChar; var AOptLength:Integer):Integer;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; BSD compatible Get Socket Option&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Socket&lt;br /&gt;
| The socket to get the option from&lt;br /&gt;
|-&lt;br /&gt;
! Level&lt;br /&gt;
| The protocol level for the option&lt;br /&gt;
|-&lt;br /&gt;
! OptName&lt;br /&gt;
| The name of the option to get&lt;br /&gt;
|-&lt;br /&gt;
! OptValue&lt;br /&gt;
| The value of the option&lt;br /&gt;
|-&lt;br /&gt;
! OptLength&lt;br /&gt;
| The length of the option&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the Socket lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.Listen(ASocket:TProtocolSocket; ABacklog:Integer):Integer;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; BSD compatible Listen&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Socket&lt;br /&gt;
| The socket to listen on&lt;br /&gt;
|-&lt;br /&gt;
! Backlog&lt;br /&gt;
| Queue depth for accepted connections&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the Socket lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.Recv(ASocket:TProtocolSocket; var ABuffer; ALength,AFlags:Integer):Integer;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; BSD compatible Receive&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Socket&lt;br /&gt;
| The socket to receive from&lt;br /&gt;
|-&lt;br /&gt;
! Buffer&lt;br /&gt;
| Buffer for received data&lt;br /&gt;
|-&lt;br /&gt;
! Length&lt;br /&gt;
| Length of buffer in bytes&lt;br /&gt;
|-&lt;br /&gt;
! Flags&lt;br /&gt;
| Protocol specific receive flags&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the Socket lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.RecvFrom(ASocket:TProtocolSocket; var ABuffer; ALength,AFlags:Integer; var AFromAddr:TSockAddr; var AFromLength:Integer):Integer;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; BSD compatible Receive From&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Socket&lt;br /&gt;
| The socket to receive from&lt;br /&gt;
|-&lt;br /&gt;
! Buffer&lt;br /&gt;
| Buffer for received data&lt;br /&gt;
|-&lt;br /&gt;
! Length&lt;br /&gt;
| Length of buffer in bytes&lt;br /&gt;
|-&lt;br /&gt;
! Flags&lt;br /&gt;
| Protocol specific receive flags&lt;br /&gt;
|-&lt;br /&gt;
! FromAddr&lt;br /&gt;
| The address the data was received from (Network Order)&lt;br /&gt;
|-&lt;br /&gt;
! FromLength&lt;br /&gt;
| The length of the address&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the Socket lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.Send(ASocket:TProtocolSocket; var ABuffer; ALength,AFlags:Integer):Integer;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; BSD compatible Send&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Socket&lt;br /&gt;
| The socket to send to&lt;br /&gt;
|-&lt;br /&gt;
! Buffer&lt;br /&gt;
| Buffer for data to send&lt;br /&gt;
|-&lt;br /&gt;
! Length&lt;br /&gt;
| Length of buffer in bytes&lt;br /&gt;
|-&lt;br /&gt;
! Flags&lt;br /&gt;
| Protocol specific send flags&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the Socket lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.SendTo(ASocket:TProtocolSocket; var ABuffer; ALength,AFlags:Integer; var AToAddr:TSockAddr; AToLength:Integer):Integer;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; BSD compatible Send To&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Socket&lt;br /&gt;
| The socket to send to&lt;br /&gt;
|-&lt;br /&gt;
! Buffer&lt;br /&gt;
| Buffer for data to send&lt;br /&gt;
|-&lt;br /&gt;
! Length&lt;br /&gt;
| Length of buffer in bytes&lt;br /&gt;
|-&lt;br /&gt;
! Flags&lt;br /&gt;
| Protocol specific send flags&lt;br /&gt;
|-&lt;br /&gt;
! ToAddr&lt;br /&gt;
| The socket address to send to (Network Order)&lt;br /&gt;
|-&lt;br /&gt;
! ToLength&lt;br /&gt;
| The length of the socket address&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the Socket lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.SetSockOpt(ASocket:TProtocolSocket; ALevel,AOptName:Integer; AOptValue:PChar; AOptLength:Integer):Integer;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; BSD compatible Set Socket Option&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Socket&lt;br /&gt;
| The socket to set the option for&lt;br /&gt;
|-&lt;br /&gt;
! Level&lt;br /&gt;
| The protocol level for the option&lt;br /&gt;
|-&lt;br /&gt;
! OptName&lt;br /&gt;
| The name of the option to set&lt;br /&gt;
|-&lt;br /&gt;
! OptValue&lt;br /&gt;
| The value of the option&lt;br /&gt;
|-&lt;br /&gt;
! OptLength&lt;br /&gt;
| The length of the option&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Caller must hold the Socket lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.Shutdown(ASocket:TProtocolSocket; AHow:Integer):Integer;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; BSD compatible Shutdown&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Socket&lt;br /&gt;
| The socket to shutdown&lt;br /&gt;
|-&lt;br /&gt;
! How&lt;br /&gt;
| The direction to shutdown the socket&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| Shutdown does not result in CloseSocket so Closed must not get set&lt;br /&gt;
Caller must hold the Socket lock&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.Socket(AFamily,AStruct,AProtocol:Integer):TProtocolSocket;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; BSD compatible Socket (Create a new socket)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Family&lt;br /&gt;
| Socket address family (eg AF_INET)&lt;br /&gt;
|-&lt;br /&gt;
! Struct&lt;br /&gt;
| Socket type (eg SOCK_DGRAM)&lt;br /&gt;
|-&lt;br /&gt;
! Protocol&lt;br /&gt;
| Socket protocol (eg IPPROTO_UDP)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.AddTransport(ATransport:TNetworkTransport):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Add a transport to this protocol&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Transport&lt;br /&gt;
| The transport to add&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.RemoveTransport(ATransport:TNetworkTransport):Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Remove a transport from this protocol&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Transport&lt;br /&gt;
| The transport to remove&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.FindSocket(AFamily,AStruct,AProtocol:Word; ALocalAddress,ARemoteAddress:Pointer; ALocalPort,ARemotePort:Word; ABroadcast,AListen,ALock:Boolean; AState:LongWord):TProtocolSocket;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Find a protocol socket based on all relevant parameters&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Family&lt;br /&gt;
| Socket address family (eg AF_INET)&lt;br /&gt;
|-&lt;br /&gt;
! Struct&lt;br /&gt;
| Socket type (eg SOCK_DGRAM)&lt;br /&gt;
|-&lt;br /&gt;
! Protocol&lt;br /&gt;
| Socket protocol (eg IPPROTO_UDP)&lt;br /&gt;
|-&lt;br /&gt;
! LocalAddress&lt;br /&gt;
| Local transport address to match (Host Order)&lt;br /&gt;
|-&lt;br /&gt;
! RemoteAddress&lt;br /&gt;
| Remote transport address to match (Host Order)&lt;br /&gt;
|-&lt;br /&gt;
! LocalPort&lt;br /&gt;
| Local port to match (Host Order)&lt;br /&gt;
|-&lt;br /&gt;
! RemotePort&lt;br /&gt;
| Remote port to match (Host Order)&lt;br /&gt;
|-&lt;br /&gt;
! Broadcast&lt;br /&gt;
| If True then match broadcast addresses&lt;br /&gt;
|-&lt;br /&gt;
! Listen&lt;br /&gt;
| If True then match only listening sockets&lt;br /&gt;
|-&lt;br /&gt;
! Lock&lt;br /&gt;
| If True then lock the found entry before returning&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;procedure TUDPProtocol.FlushSockets(All:Boolean);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Flush sockets from the socket cache&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! All&lt;br /&gt;
| If True flush all sockets, otherwise flush expired sockets.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.StartProtocol:Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Start this protocol ready for sending and receiving&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.StopProtocol:Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Stop this protocol ready for removal&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;border: 0; padding-bottom:0px;&amp;quot;&amp;gt;function TUDPProtocol.ProcessProtocol:Boolean;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 14px; padding-left: 12px;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Description:&amp;#039;&amp;#039;&amp;#039; Process periodic tasks for this protocol&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;text-align: left; padding-left: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 14px; background: white;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
| None documented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Return to [[Unit_Reference|Unit Reference]]&lt;/div&gt;</summary>
		<author><name>Ultibo</name></author>	</entry>

	</feed>