<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Simon Steed&#039;s Blog About Stuff! &#187; SocketException</title>
	<atom:link href="http://blog.xploiter.com/tag/socketexception/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.xploiter.com</link>
	<description>i.e. anything interesting...</description>
	<lastBuildDate>Tue, 23 Mar 2010 09:21:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=5079</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Client Socket Programming in C# using the built in libraries &#8211; a fully working production example Part 2</title>
		<link>http://blog.xploiter.com/c-and-aspnet/client-socket-programming-in-c-using-the-built-in-libraries-a-fully-working-production-example-part-2/</link>
		<comments>http://blog.xploiter.com/c-and-aspnet/client-socket-programming-in-c-using-the-built-in-libraries-a-fully-working-production-example-part-2/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 11:11:58 +0000</pubDate>
		<dc:creator>Simon Steed</dc:creator>
				<category><![CDATA[C# and ASP.Net]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[delegates]]></category>
		<category><![CDATA[dotnet]]></category>
		<category><![CDATA[Encoding]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[ExceptionHandler]]></category>
		<category><![CDATA[framework 2.0]]></category>
		<category><![CDATA[framework 3.5]]></category>
		<category><![CDATA[messaging]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[OnDataReceived]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[SocketException]]></category>
		<category><![CDATA[SocketPacket]]></category>
		<category><![CDATA[sockets]]></category>
		<category><![CDATA[tcp]]></category>
		<category><![CDATA[tcpip]]></category>
		<category><![CDATA[threading]]></category>
		<category><![CDATA[threads]]></category>
		<category><![CDATA[visual studio]]></category>
		<category><![CDATA[vs2005]]></category>
		<category><![CDATA[vs2008]]></category>
		<category><![CDATA[WaitForData]]></category>

		<guid isPermaLink="false">http://blog.xploiter.com/?p=88</guid>
		<description><![CDATA[My previous article which you can find at http://blog.xploiter.com/index.php/2009/01/16/socket-programming-in-c-using-the-built-in-libraries-a-fully-working-production-example-part-1/ covered the creation of a solid production ready Socket Server written in C#. I promised to follow up with part 2 which would be a suitable client so without further ado, here we go]]></description>
			<content:encoded><![CDATA[<p><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!--[if !mso]><span class="mceItemObject"   classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui></span><br />
<mce:style><!  st1\:*{behavior:url(#ieooui) } --></p>
<p><!--[endif]--></p>
<p class="MsoNormal"><span lang="EN-GB">My previous article which you can find at <a href="../index.php/2009/01/16/socket-programming-in-c-using-the-built-in-libraries-a-fully-working-production-example-part-1/">http://blog.xploiter.com/index.php/2009/01/16/socket-programming-in-c-using-the-built-in-libraries-a-fully-working-production-example-part-1/</a> covered the creation of a solid production ready Socket Server written in C#. I promised to follow up with part 2 which would be a suitable client so without further ado, here we go:</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><strong><span style="text-decoration: underline;"><span lang="EN-GB">App.Config</span></span></strong></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">&lt;?</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: #a31515;">xml</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"> </span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: red;">version</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">=</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;">&#8220;<span style="color: blue;">1.0</span>&#8220;<span style="color: blue;"> </span><span style="color: red;">encoding</span><span style="color: blue;">=</span>&#8220;<span style="color: blue;">utf-8</span>&#8220;<span style="color: blue;"> ?&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">&lt;</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: #a31515;">configuration</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">&gt;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>&lt;</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: #a31515;">appSettings</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">&gt;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>&lt;</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: #a31515;">add</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"> </span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: red;">key</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">=</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;">&#8220;<span style="color: blue;">ServerIP</span>&#8220;<span style="color: blue;"> </span><span style="color: red;">value</span><span style="color: blue;">=</span>&#8220;<span style="color: blue;">127.0.0.1</span>&#8220;<span style="color: blue;"> /&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>&lt;</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: #a31515;">add</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"> </span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: red;">key</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">=</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;">&#8220;<span style="color: blue;">ServerPort</span>&#8220;<span style="color: blue;"> </span><span style="color: red;">value</span><span style="color: blue;">=</span>&#8220;<span style="color: blue;">10001</span>&#8220;<span style="color: blue;"> /&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>&lt;/</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: #a31515;">appSettings</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">&gt;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">&lt;/</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: #a31515;">configuration</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">&gt;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">This time we define the server IP Address we wish to connect to as well as the port to use.</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><strong><span style="text-decoration: underline;"><span lang="EN-GB">ExceptionHandler.CS</span></span></strong></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Collections<span style="color: green;">.</span>Generic;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Linq;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Text;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Data;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Data<span style="color: green;">.</span>SqlClient;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Windows;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">namespace</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> SocketClient</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;">{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Handles displaying error messages</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">ExceptionHandler</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Takes the exception message and displays a meaningful message to the user</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">static</span> <span style="color: blue;">string</span> DisplayMessage(<span style="color: #2b91af;">Exception</span> ex)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">return</span> DisplayMessage(ex, <span style="color: red;">&#8220;&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Takes the exception message and displays a meaningful message to the user</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> The exception to display.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Current User</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">//[System.Diagnostics.DebuggerStepThrough()]</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">static</span> <span style="color: blue;">string</span> DisplayMessage(<span style="color: #2b91af;">Exception</span> ex, <span style="color: blue;">string</span> userName)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">StringBuilder</span> sb <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">StringBuilder</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (ex <span style="color: blue;">is</span> <span style="color: #2b91af;">DBConcurrencyException</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Concurrency Error: One or more people have updated this data since your last request.&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">else</span> <span style="color: blue;">if</span> (ex <span style="color: blue;">is</span> <span style="color: #2b91af;">SqlException</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Database Error: &#8220;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">switch</span> (((<span style="color: #2b91af;">SqlException</span>)ex)<span style="color: green;">.</span>Number)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">case</span> <span style="color: navy;">547</span>:</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;There is a constraint on the items you tried to modify. Please try again.&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">case</span> <span style="color: navy;">2601</span>:</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Unique Index</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Cannot insert duplicate values into the database.&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">case</span> <span style="color: navy;">2627</span>:</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Unique Constraint</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Cannot insert duplicate values into the database.&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">default</span>:</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(ex<span style="color: green;">.</span>Message);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">else</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Exception Handler Unexpected Error: &#8220;</span> <span style="color: green;">+</span> ex<span style="color: green;">.</span>Message);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> nl <span style="color: green;">=</span> <span style="color: red;">&#8220;\n\n&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(nl <span style="color: green;">+</span> <span style="color: red;">&#8220;Exception Information:&#8221;</span> <span style="color: green;">+</span> nl);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Message: &#8220;</span> <span style="color: green;">+</span> ex<span style="color: green;">.</span>Message <span style="color: green;">+</span> nl);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Source: &#8220;</span> <span style="color: green;">+</span> ex<span style="color: green;">.</span>Source <span style="color: green;">+</span> nl);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Stack Trace: &#8220;</span> <span style="color: green;">+</span> ex<span style="color: green;">.</span>StackTrace <span style="color: green;">+</span> nl);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (ex<span style="color: green;">.</span>InnerException <span style="color: green;">!=</span> <span style="color: blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(nl <span style="color: green;">+</span> <span style="color: red;">&#8220;Inner Exception Info:&#8221;</span> <span style="color: green;">+</span> nl);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Message: &#8220;</span> <span style="color: green;">+</span> ex<span style="color: green;">.</span>InnerException<span style="color: green;">.</span>Message <span style="color: green;">+</span> nl);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Source: &#8220;</span> <span style="color: green;">+</span> ex<span style="color: green;">.</span>InnerException<span style="color: green;">.</span>Source <span style="color: green;">+</span> nl);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Stack Trace: &#8220;</span> <span style="color: green;">+</span> ex<span style="color: green;">.</span>InnerException<span style="color: green;">.</span>StackTrace <span style="color: green;">+</span> nl);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">return</span> sb<span style="color: green;">.</span>ToString();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;">}</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">Same as the SocketServer code.</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><strong><span style="text-decoration: underline;"><span lang="EN-GB">SocketClient.cs</span></span></strong></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Net;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Net<span style="color: green;">.</span>Sockets;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Diagnostics;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Collections;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>ComponentModel;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Collections<span style="color: green;">.</span>Generic;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Reflection;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Data;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Drawing;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Linq;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Text;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Threading;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>IO;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> Microsoft<span style="color: green;">.</span>VisualBasic;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Configuration;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">namespace</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> SocketClient</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;">{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Description of SocketClient.<span> </span></span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">Client</span> : System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">Form</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#region</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> private members</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">byte</span>[] m_dataBuffer <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: blue;">byte</span>[<span style="color: navy;">10</span>];</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">IAsyncResult</span> m_result;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: #2b91af;">AsyncCallback</span> m_pfnCallBack;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">Timer</span> timerAlive;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> System<span style="color: green;">.</span>ComponentModel<span style="color: green;">.</span><span style="color: #2b91af;">IContainer</span> components;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">int</span> _ServerSocketID <span style="color: green;">=</span> <span style="color: green;">-</span><span style="color: navy;">1</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: #2b91af;">Socket</span> m_clientSocket;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">bool</span> isClosing <span style="color: green;">=</span> <span style="color: blue;">false</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">Int16</span> _Port <span style="color: green;">=</span> <span style="color: navy;">10001</span>; <span style="color: green;">// default port we listen on</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> _ServerIP <span style="color: green;">=</span> <span style="color: red;">&#8220;127.0.0.1&#8243;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: #2b91af;">GroupBox</span> groupBox1;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: #2b91af;">Button</span> buttonConnect;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: #2b91af;">Button</span> button1;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: #2b91af;">TextBox</span> textBoxMsg;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: #2b91af;">Button</span> buttonDisconnect;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: #2b91af;">Button</span> btnSendMessage;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: #2b91af;">Label</span> label4;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: #2b91af;">RichTextBox</span> richTextRxMessage;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">Timer</span> tmrServerCheck;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// This delegate enables asynchronous calls for setting</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// the text property on a TextBox control.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span><span style="color: blue;">delegate</span> <span style="color: blue;">void</span> <span style="color: #2b91af;">AppendTextCallback</span>(<span style="color: blue;">string</span> text);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">delegate</span> <span style="color: blue;">void</span> <span style="color: #2b91af;">DisconnectCallback</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#endregion</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> private members</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#region</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> constructor</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> Client()</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">//</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// The InitializeComponent() call is required for Windows Forms designer support.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">//</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>InitializeComponent();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>_ServerIP <span style="color: green;">=</span> <span style="color: #2b91af;">ConfigurationManager</span><span style="color: green;">.</span>AppSettings[<span style="color: red;">"ServerIP"</span>];</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>_Port <span style="color: green;">=</span> <span style="color: #2b91af;">Convert</span><span style="color: green;">.</span>ToInt16(<span style="color: #2b91af;">ConfigurationManager</span><span style="color: green;">.</span>AppSettings[<span style="color: red;">"ServerPort"</span>]);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>[<span style="color: #2b91af;">STAThread</span>]</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">static</span> <span style="color: blue;">void</span> Main(<span style="color: blue;">string</span>[] args)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">Application</span><span style="color: green;">.</span>ThreadException <span style="color: green;">+=</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">ThreadExceptionEventHandler</span>(Application_ThreadException);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">Application</span><span style="color: green;">.</span>Run(<span style="color: blue;">new</span> <span style="color: #2b91af;">Client</span>());</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">static</span> <span style="color: blue;">void</span> Application_ThreadException(<span style="color: blue;">object</span> sender, <span style="color: #2b91af;">ThreadExceptionEventArgs</span> e)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>WriteToLogFile(<span style="color: #2b91af;">ExceptionHandler</span><span style="color: green;">.</span>DisplayMessage(e<span style="color: green;">.</span>Exception));</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">MessageBox</span><span style="color: green;">.</span>Show(<span style="color: #2b91af;">ExceptionHandler</span><span style="color: green;">.</span>DisplayMessage(e<span style="color: green;">.</span>Exception));</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#endregion</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> constructor</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#region</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> Windows Forms Designer generated code</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> This method is required for Windows Forms designer support.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Do not change the method contents inside the source code editor. The Forms designer might</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> not be able to load this method if it was changed manually.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> InitializeComponent()</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>components <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>ComponentModel<span style="color: green;">.</span><span style="color: #2b91af;">Container</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>timerAlive <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">Timer</span>(<span style="color: blue;">this</span><span style="color: green;">.</span>components);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1 <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">GroupBox</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonConnect <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">Button</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>button1 <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">Button</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>textBoxMsg <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">TextBox</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonDisconnect <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">Button</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>btnSendMessage <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">Button</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label4 <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">Label</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextRxMessage <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">RichTextBox</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>tmrServerCheck <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">Timer</span>(<span style="color: blue;">this</span><span style="color: green;">.</span>components);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>SuspendLayout();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>SuspendLayout();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// timerAlive</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>timerAlive<span style="color: green;">.</span>Interval <span style="color: green;">=</span> <span style="color: navy;">10000</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>timerAlive<span style="color: green;">.</span>Tick <span style="color: green;">+=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span><span style="color: #2b91af;">EventHandler</span>(<span style="color: blue;">this</span><span style="color: green;">.</span>timerAlive_Tick);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// groupBox1</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Controls<span style="color: green;">.</span>Add(<span style="color: blue;">this</span><span style="color: green;">.</span>buttonConnect);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Controls<span style="color: green;">.</span>Add(<span style="color: blue;">this</span><span style="color: green;">.</span>button1);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Controls<span style="color: green;">.</span>Add(<span style="color: blue;">this</span><span style="color: green;">.</span>textBoxMsg);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Controls<span style="color: green;">.</span>Add(<span style="color: blue;">this</span><span style="color: green;">.</span>buttonDisconnect);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Controls<span style="color: green;">.</span>Add(<span style="color: blue;">this</span><span style="color: green;">.</span>btnSendMessage);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Controls<span style="color: green;">.</span>Add(<span style="color: blue;">this</span><span style="color: green;">.</span>label4);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Controls<span style="color: green;">.</span>Add(<span style="color: blue;">this</span><span style="color: green;">.</span>richTextRxMessage);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Dock <span style="color: green;">=</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">DockStyle</span><span style="color: green;">.</span>Fill;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Location <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Point</span>(<span style="color: navy;">0</span>, <span style="color: navy;">0</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Name <span style="color: green;">=</span> <span style="color: red;">&#8220;groupBox1&#8243;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Size <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Size</span>(<span style="color: navy;">446</span>, <span style="color: navy;">159</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>TabIndex <span style="color: green;">=</span> <span style="color: navy;">18</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>TabStop <span style="color: green;">=</span> <span style="color: blue;">false</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Text <span style="color: green;">=</span> <span style="color: red;">&#8220;Client Setup&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// buttonConnect</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonConnect<span style="color: green;">.</span>BackColor <span style="color: green;">=</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">SystemColors</span><span style="color: green;">.</span>HotTrack;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonConnect<span style="color: green;">.</span>Font <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Font</span>(<span style="color: red;">&#8220;Tahoma&#8221;</span>, <span style="color: navy;">8.25F</span>, System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">FontStyle</span><span style="color: green;">.</span>Bold, System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">GraphicsUnit</span><span style="color: green;">.</span>Point, ((<span style="color: blue;">byte</span>)(<span style="color: navy;">0</span>)));</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonConnect<span style="color: green;">.</span>ForeColor <span style="color: green;">=</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Color</span><span style="color: green;">.</span>Yellow;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonConnect<span style="color: green;">.</span>Location <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Point</span>(<span style="color: navy;">12</span>, <span style="color: navy;">19</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonConnect<span style="color: green;">.</span>Name <span style="color: green;">=</span> <span style="color: red;">&#8220;buttonConnect&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonConnect<span style="color: green;">.</span>Size <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Size</span>(<span style="color: navy;">85</span>, <span style="color: navy;">48</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonConnect<span style="color: green;">.</span>TabIndex <span style="color: green;">=</span> <span style="color: navy;">38</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonConnect<span style="color: green;">.</span>Text <span style="color: green;">=</span> <span style="color: red;">&#8220;Connect To Server&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonConnect<span style="color: green;">.</span>UseVisualStyleBackColor <span style="color: green;">=</span> <span style="color: blue;">false</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonConnect<span style="color: green;">.</span>Click <span style="color: green;">+=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span><span style="color: #2b91af;">EventHandler</span>(<span style="color: blue;">this</span><span style="color: green;">.</span>ButtonConnectClick);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// button1</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>button1<span style="color: green;">.</span>Location <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Point</span>(<span style="color: navy;">139</span>, <span style="color: navy;">124</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>button1<span style="color: green;">.</span>Name <span style="color: green;">=</span> <span style="color: red;">&#8220;button1&#8243;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>button1<span style="color: green;">.</span>Size <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Size</span>(<span style="color: navy;">49</span>, <span style="color: navy;">24</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>button1<span style="color: green;">.</span>TabIndex <span style="color: green;">=</span> <span style="color: navy;">35</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>button1<span style="color: green;">.</span>Text <span style="color: green;">=</span> <span style="color: red;">&#8220;Clear&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>button1<span style="color: green;">.</span>Click <span style="color: green;">+=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span><span style="color: #2b91af;">EventHandler</span>(<span style="color: blue;">this</span><span style="color: green;">.</span>btnClear_Click);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// textBoxMsg</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>textBoxMsg<span style="color: green;">.</span>Location <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Point</span>(<span style="color: navy;">7</span>, <span style="color: navy;">98</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>textBoxMsg<span style="color: green;">.</span>Name <span style="color: green;">=</span> <span style="color: red;">&#8220;textBoxMsg&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>textBoxMsg<span style="color: green;">.</span>Size <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Size</span>(<span style="color: navy;">181</span>, <span style="color: navy;">20</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>textBoxMsg<span style="color: green;">.</span>TabIndex <span style="color: green;">=</span> <span style="color: navy;">33</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>textBoxMsg<span style="color: green;">.</span>Tag <span style="color: green;">=</span> <span style="color: red;">&#8220;&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// buttonDisconnect</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonDisconnect<span style="color: green;">.</span>BackColor <span style="color: green;">=</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Color</span><span style="color: green;">.</span>Red;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonDisconnect<span style="color: green;">.</span>Font <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Font</span>(<span style="color: red;">&#8220;Tahoma&#8221;</span>, <span style="color: navy;">8.25F</span>, System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">FontStyle</span><span style="color: green;">.</span>Bold, System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">GraphicsUnit</span><span style="color: green;">.</span>Point, ((<span style="color: blue;">byte</span>)(<span style="color: navy;">0</span>)));</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonDisconnect<span style="color: green;">.</span>ForeColor <span style="color: green;">=</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Color</span><span style="color: green;">.</span>Yellow;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonDisconnect<span style="color: green;">.</span>Location <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Point</span>(<span style="color: navy;">12</span>, <span style="color: navy;">19</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonDisconnect<span style="color: green;">.</span>Name <span style="color: green;">=</span> <span style="color: red;">&#8220;buttonDisconnect&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonDisconnect<span style="color: green;">.</span>Size <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Size</span>(<span style="color: navy;">85</span>, <span style="color: navy;">48</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonDisconnect<span style="color: green;">.</span>TabIndex <span style="color: green;">=</span> <span style="color: navy;">32</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonDisconnect<span style="color: green;">.</span>Text <span style="color: green;">=</span> <span style="color: red;">&#8220;Disconnect From Server&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonDisconnect<span style="color: green;">.</span>UseVisualStyleBackColor <span style="color: green;">=</span> <span style="color: blue;">false</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonDisconnect<span style="color: green;">.</span>Visible <span style="color: green;">=</span> <span style="color: blue;">false</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonDisconnect<span style="color: green;">.</span>Click <span style="color: green;">+=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span><span style="color: #2b91af;">EventHandler</span>(<span style="color: blue;">this</span><span style="color: green;">.</span>ButtonDisconnectClick);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// btnSendMessage</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>btnSendMessage<span style="color: green;">.</span>Enabled <span style="color: green;">=</span> <span style="color: blue;">false</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>btnSendMessage<span style="color: green;">.</span>Location <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Point</span>(<span style="color: navy;">80</span>, <span style="color: navy;">124</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>btnSendMessage<span style="color: green;">.</span>Name <span style="color: green;">=</span> <span style="color: red;">&#8220;btnSendMessage&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>btnSendMessage<span style="color: green;">.</span>Size <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Size</span>(<span style="color: navy;">49</span>, <span style="color: navy;">24</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>btnSendMessage<span style="color: green;">.</span>TabIndex <span style="color: green;">=</span> <span style="color: navy;">31</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>btnSendMessage<span style="color: green;">.</span>Text <span style="color: green;">=</span> <span style="color: red;">&#8220;Send&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>btnSendMessage<span style="color: green;">.</span>Click <span style="color: green;">+=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span><span style="color: #2b91af;">EventHandler</span>(<span style="color: blue;">this</span><span style="color: green;">.</span>ButtonSendMessageClick);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// label4</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label4<span style="color: green;">.</span>Location <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Point</span>(<span style="color: navy;">9</span>, <span style="color: navy;">79</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label4<span style="color: green;">.</span>Name <span style="color: green;">=</span> <span style="color: red;">&#8220;label4&#8243;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label4<span style="color: green;">.</span>Size <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Size</span>(<span style="color: navy;">120</span>, <span style="color: navy;">16</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label4<span style="color: green;">.</span>TabIndex <span style="color: green;">=</span> <span style="color: navy;">30</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label4<span style="color: green;">.</span>Text <span style="color: green;">=</span> <span style="color: red;">&#8220;Message To Server&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// richTextRxMessage</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextRxMessage<span style="color: green;">.</span>BackColor <span style="color: green;">=</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">SystemColors</span><span style="color: green;">.</span>InactiveCaptionText;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextRxMessage<span style="color: green;">.</span>Font <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Font</span>(<span style="color: red;">&#8220;Microsoft Sans Serif&#8221;</span>, <span style="color: navy;">7F</span>, System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">FontStyle</span><span style="color: green;">.</span>Regular, System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">GraphicsUnit</span><span style="color: green;">.</span>Point, ((<span style="color: blue;">byte</span>)(<span style="color: navy;">0</span>)));</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextRxMessage<span style="color: green;">.</span>Location <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Point</span>(<span style="color: navy;">194</span>, <span style="color: navy;">19</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextRxMessage<span style="color: green;">.</span>Name <span style="color: green;">=</span> <span style="color: red;">&#8220;richTextRxMessage&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextRxMessage<span style="color: green;">.</span>ReadOnly <span style="color: green;">=</span> <span style="color: blue;">true</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextRxMessage<span style="color: green;">.</span>Size <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Size</span>(<span style="color: navy;">247</span>, <span style="color: navy;">129</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextRxMessage<span style="color: green;">.</span>TabIndex <span style="color: green;">=</span> <span style="color: navy;">27</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextRxMessage<span style="color: green;">.</span>Text <span style="color: green;">=</span> <span style="color: red;">&#8220;&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// tmrServerCheck</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>tmrServerCheck<span style="color: green;">.</span>Enabled <span style="color: green;">=</span> <span style="color: blue;">true</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>tmrServerCheck<span style="color: green;">.</span>Interval <span style="color: green;">=</span> <span style="color: navy;">5000</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>tmrServerCheck<span style="color: green;">.</span>Tick <span style="color: green;">+=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span><span style="color: #2b91af;">EventHandler</span>(<span style="color: blue;">this</span><span style="color: green;">.</span>tmrServerCheck_Tick);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Client</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>AutoScaleBaseSize <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Size</span>(<span style="color: navy;">5</span>, <span style="color: navy;">13</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>ClientSize <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Size</span>(<span style="color: navy;">446</span>, <span style="color: navy;">159</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>Controls<span style="color: green;">.</span>Add(<span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>FormBorderStyle <span style="color: green;">=</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">FormBorderStyle</span><span style="color: green;">.</span>Fixed3D;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>Name <span style="color: green;">=</span> <span style="color: red;">&#8220;Client&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>FormClosed <span style="color: green;">+=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">FormClosedEventHandler</span>(<span style="color: blue;">this</span><span style="color: green;">.</span>SocketClient_FormClosed);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>ResumeLayout(<span style="color: blue;">false</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>PerformLayout();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>ResumeLayout(<span style="color: blue;">false</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#endregion</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#region</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> event handlers</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> tmrServerCheck_Tick(<span style="color: blue;">object</span> sender, <span style="color: #2b91af;">EventArgs</span> e)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// check to see if the server is available, if so connect to it automatically</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// See if we have text on the IP and Port text fields</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (_ServerIP <span style="color: green;">!=</span> <span style="color: red;">&#8220;&#8221;</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">try</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>UpdateControls(<span style="color: blue;">false</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>CreateSocket();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>UpdateControls(<span style="color: blue;">true</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>buttonConnect<span style="color: green;">.</span>Visible <span style="color: green;">=</span> <span style="color: blue;">false</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>buttonDisconnect<span style="color: green;">.</span>Visible <span style="color: green;">=</span> <span style="color: blue;">true</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>btnSendMessage<span style="color: green;">.</span>Enabled <span style="color: green;">=</span> <span style="color: blue;">true</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> (<span style="color: #2b91af;">SocketException</span> se)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>WriteToLogFile(<span style="color: red;">&#8220;Cannot connect to server, is it available?&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>UpdateControls(<span style="color: blue;">false</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">void</span> ButtonDisconnectClick(<span style="color: blue;">object</span> sender, System<span style="color: green;">.</span><span style="color: #2b91af;">EventArgs</span> e)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>timerAlive<span style="color: green;">.</span>Enabled <span style="color: green;">=</span> <span style="color: blue;">false</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>SendMessageToServer(<span style="color: red;">&#8220;id=client,closing,socket=&#8221;</span> <span style="color: green;">+</span> _ServerSocketID);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (m_clientSocket <span style="color: green;">!=</span> <span style="color: blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_clientSocket<span style="color: green;">.</span>Close();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_clientSocket <span style="color: green;">=</span> <span style="color: blue;">null</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>UpdateControls(<span style="color: blue;">false</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>buttonConnect<span style="color: green;">.</span>Visible <span style="color: green;">=</span> <span style="color: blue;">true</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>buttonDisconnect<span style="color: green;">.</span>Visible <span style="color: green;">=</span> <span style="color: blue;">false</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>btnSendMessage<span style="color: green;">.</span>Enabled <span style="color: green;">=</span> <span style="color: blue;">false</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> btnClear_Click(<span style="color: blue;">object</span> sender, System<span style="color: green;">.</span><span style="color: #2b91af;">EventArgs</span> e)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>richTextRxMessage<span style="color: green;">.</span>Clear();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> timerAlive_Tick(<span style="color: blue;">object</span> sender, <span style="color: #2b91af;">EventArgs</span> e)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>SendMessageToServer(<span style="color: red;">&#8220;id=client,available,socket=&#8221;</span> <span style="color: green;">+</span> _ServerSocketID);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> ExitApplication()</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>ClosingApplication();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>Close();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> ClosingApplication()</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>SendMessageToServer(<span style="color: red;">&#8220;id=client,shutdown,socket=&#8221;</span> <span style="color: green;">+</span> _ServerSocketID);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>isClosing <span style="color: green;">=</span> <span style="color: blue;">true</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (m_clientSocket <span style="color: green;">!=</span> <span style="color: blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_clientSocket<span style="color: green;">.</span>Close();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_clientSocket <span style="color: green;">=</span> <span style="color: blue;">null</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> SocketClient_FormClosed(<span style="color: blue;">object</span> sender, <span style="color: #2b91af;">FormClosedEventArgs</span> e)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (<span style="color: green;">!</span>isClosing)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>ClosingApplication();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">void</span> ButtonConnectClick(<span style="color: blue;">object</span> sender, System<span style="color: green;">.</span><span style="color: #2b91af;">EventArgs</span> e)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// See if we have text on the IP and Port text fields</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (_ServerIP <span style="color: green;">==</span> <span style="color: red;">&#8220;&#8221;</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">MessageBox</span><span style="color: green;">.</span>Show(<span style="color: red;">&#8220;Port Number is required to connect to the Server\n&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">return</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">try</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>UpdateControls(<span style="color: blue;">false</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>CreateSocket();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>UpdateControls(<span style="color: blue;">true</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span>buttonConnect<span style="color: green;">.</span>Visible <span style="color: green;">=</span> <span style="color: blue;">false</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>buttonDisconnect<span style="color: green;">.</span>Visible <span style="color: green;">=</span> <span style="color: blue;">true</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>btnSendMessage<span style="color: green;">.</span>Enabled <span style="color: green;">=</span> <span style="color: blue;">true</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> (<span style="color: #2b91af;">SocketException</span> se)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> str;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>str <span style="color: green;">=</span> <span style="color: red;">&#8220;Connection failed, is the server running?\n&#8221;</span> <span style="color: green;">+</span> se<span style="color: green;">.</span>Message;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>WriteToLogFile(str);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>UpdateControls(<span style="color: blue;">false</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">void</span> ButtonSendMessageClick(<span style="color: blue;">object</span> sender, System<span style="color: green;">.</span><span style="color: #2b91af;">EventArgs</span> e)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>SendMessageToServer(textBoxMsg<span style="color: green;">.</span>Text <span style="color: green;">+</span> <span style="color: red;">&#8220;,socket=&#8221;</span> <span style="color: green;">+</span> _ServerSocketID);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> button1_Click(<span style="color: blue;">object</span> sender, <span style="color: #2b91af;">EventArgs</span> e)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>richTextRxMessage<span style="color: green;">.</span>Clear();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#endregion</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> event handlers</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span><span> </span>#region</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> private methods</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// If the calling thread is different from the thread that</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// created the TextBox control, this method creates a</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// AppendTextCallback and calls itself asynchronously using the</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Invoke method.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">//</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// If the calling thread is the same as the thread that created</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// the TextBox control, the Text property is set directly.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> AppendRxText(<span style="color: blue;">string</span> text)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// InvokeRequired required compares the thread ID of the</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// calling thread to the thread ID of the creating thread.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// If these threads are different, it returns true.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: green;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (<span style="color: blue;">this</span><span style="color: green;">.</span>richTextRxMessage<span style="color: green;">.</span>InvokeRequired)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">AppendTextCallback</span> d <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">AppendTextCallback</span>(AppendRxText);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>Invoke(d, <span style="color: blue;">new</span> <span style="color: blue;">object</span>[] { text });</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>WriteToLogFile(text);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">else</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>richTextRxMessage<span style="color: green;">.</span>AppendText(text <span style="color: green;">+</span> <span style="color: red;">&#8220;\r&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>WriteToLogFile(text);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> ClosedownSocket()</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (<span style="color: blue;">this</span><span style="color: green;">.</span>buttonDisconnect<span style="color: green;">.</span>InvokeRequired)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">DisconnectCallback</span> d <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">DisconnectCallback</span>(ClosedownSocket);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>Invoke(d, <span style="color: blue;">null</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">else</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>ButtonDisconnectClick(<span style="color: blue;">this</span>, <span style="color: blue;">null</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> CreateSocket()</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Create the socket instance</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_clientSocket <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">Socket</span>(<span style="color: #2b91af;">AddressFamily</span><span style="color: green;">.</span>InterNetwork, <span style="color: #2b91af;">SocketType</span><span style="color: green;">.</span>Stream, <span style="color: #2b91af;">ProtocolType</span><span style="color: green;">.</span>Tcp);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Cet the remote IP address</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">IPAddress</span> ip <span style="color: green;">=</span> <span style="color: #2b91af;">IPAddress</span><span style="color: green;">.</span>Parse(_ServerIP);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">int</span> iPortNo <span style="color: green;">=</span> System<span style="color: green;">.</span><span style="color: #2b91af;">Convert</span><span style="color: green;">.</span>ToInt16(_Port);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Create the end point </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">IPEndPoint</span> ipEnd <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">IPEndPoint</span>(ip, iPortNo);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Connect to the remote host</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_clientSocket<span style="color: green;">.</span>Connect(ipEnd);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (m_clientSocket<span style="color: green;">.</span>Connected)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">//Wait for data asynchronously </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>WaitForData();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Allows us to send a string command to our server</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;msg&#8221;&gt;</span><span style="color: green;">string command to send (comma delimited format)</span><span style="color: gray;">&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> SendMessageToServer(<span style="color: blue;">string</span> msg)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">try</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (m_clientSocket <span style="color: green;">!=</span> <span style="color: blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (m_clientSocket<span style="color: green;">.</span>Connected)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// New code to send strings</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">NetworkStream</span> networkStream <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">NetworkStream</span>(m_clientSocket);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>System<span style="color: green;">.</span>IO<span style="color: green;">.</span><span style="color: #2b91af;">StreamWriter</span> streamWriter <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>IO<span style="color: green;">.</span><span style="color: #2b91af;">StreamWriter</span>(networkStream);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>streamWriter<span style="color: green;">.</span>WriteLine(msg);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>streamWriter<span style="color: green;">.</span>Flush();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> (<span style="color: #2b91af;">SocketException</span> se)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">MessageBox</span><span style="color: green;">.</span>Show(se<span style="color: green;">.</span>Message);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Allows us to send a Byte Array to our server</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;objData&#8221;&gt;</span><span style="color: green;">Byte array to send</span><span style="color: gray;">&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> SendMessageToServer(<span style="color: blue;">byte</span>[] objData)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">try</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Use the following code to send bytes</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">byte</span>[] byData <span style="color: green;">=</span> System<span style="color: green;">.</span>Text<span style="color: green;">.</span><span style="color: #2b91af;">Encoding</span><span style="color: green;">.</span>ASCII<span style="color: green;">.</span>GetBytes(objData<span style="color: green;">.</span>ToString());</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (m_clientSocket <span style="color: green;">!=</span> <span style="color: blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_clientSocket<span style="color: green;">.</span>Send(byData);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> (<span style="color: #2b91af;">SocketException</span> se)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">MessageBox</span><span style="color: green;">.</span>Show(se<span style="color: green;">.</span>Message);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> UpdateControls(<span style="color: blue;">bool</span> connected)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>buttonConnect<span style="color: green;">.</span>Enabled <span style="color: green;">=</span> <span style="color: green;">!</span>connected;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>buttonDisconnect<span style="color: green;">.</span>Enabled <span style="color: green;">=</span> connected;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> connectStatus <span style="color: green;">=</span> connected <span style="color: green;">?</span> <span style="color: red;">&#8220;Connected&#8221;</span> : <span style="color: red;">&#8220;Not Connected&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>AppendRxText(connectStatus <span style="color: green;">+</span> <span style="color: red;">&#8220;\r&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (connected)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>timerAlive<span style="color: green;">.</span>Enabled <span style="color: green;">=</span> <span style="color: blue;">true</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>tmrServerCheck<span style="color: green;">.</span>Enabled <span style="color: green;">=</span> <span style="color: blue;">false</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">else</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>timerAlive<span style="color: green;">.</span>Enabled <span style="color: green;">=</span> <span style="color: blue;">false</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>tmrServerCheck<span style="color: green;">.</span>Enabled <span style="color: green;">=</span> <span style="color: blue;">true</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<span> </span></span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// This is a helper function used (for convenience) to </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// get the IP address of the local machine</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: #2b91af;">String</span> GetIP()</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">String</span> strHostName <span style="color: green;">=</span> <span style="color: #2b91af;">Dns</span><span style="color: green;">.</span>GetHostName();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Find host by name</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">IPHostEntry</span> iphostentry <span style="color: green;">=</span> <span style="color: #2b91af;">Dns</span><span style="color: green;">.</span>GetHostEntry(strHostName);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Grab the first IP addresses</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">String</span> IPStr <span style="color: green;">=</span> <span style="color: red;">&#8220;&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">foreach</span> (<span style="color: #2b91af;">IPAddress</span> ipaddress <span style="color: blue;">in</span> iphostentry<span style="color: green;">.</span>AddressList)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>IPStr <span style="color: green;">=</span> ipaddress<span style="color: green;">.</span>ToString();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">return</span> IPStr;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">return</span> IPStr;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> Processcommand(<span style="color: blue;">string</span>[] ClientCommand, <span style="color: #2b91af;">SocketPacket</span> socket)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// get our command string, parse it, pass through case statement</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// and perform the relevant update i.e. label status</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: green;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">//int count = ClientCommand.Length; // how many elements in our array</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (ClientCommand[<span style="color: navy;">0</span>]<span style="color: green;">.</span>ToLower() <span style="color: green;">!=</span> <span style="color: red;">&#8220;server reply&#8221;</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">switch</span> (ClientCommand[<span style="color: navy;">0</span>]<span style="color: green;">.</span>ToLower())</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">case</span> <span style="color: red;">&#8220;shutdown&#8221;</span>:</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// server has closed the connection, ensure we disconnect</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>ClosedownSocket();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">case</span> <span style="color: red;">&#8220;servermsg:killclient&#8221;</span>:</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// shutdown this application</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>ClosedownSocket();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>Close();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">case</span> <span style="color: red;">&#8220;hello&#8221;</span>: <span style="color: green;">// we have connected to our server, get our socketid to use in all our comms</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// this ensures that our server knows which client has sent the command</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span>[] Args <span style="color: green;">=</span> SplitQuoted(ClientCommand[<span style="color: navy;">1</span>], <span style="color: red;">&#8220;\t\r\n\0&#8243;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>_ServerSocketID <span style="color: green;">=</span> <span style="color: #2b91af;">Convert</span><span style="color: green;">.</span>ToInt32(Args[<span style="color: navy;">0</span>]);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>SendMessageToServer(<span style="color: red;">&#8220;hello,&#8221;</span> <span style="color: green;">+</span> _ServerSocketID <span style="color: green;">+</span> <span style="color: red;">&#8220;,id=client&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">default</span>:</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Here we decode the string sent from the client</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;szData&#8221;&gt;&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">string</span>[] DecodeCommandString(<span style="color: blue;">string</span> szData)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span>[] command <span style="color: green;">=</span> SplitQuoted(szData, <span style="color: red;">&#8220;;\r\n\0&#8243;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">return</span> command;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> WaitForData()</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">try</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span><span style="color: blue;">if</span> (m_clientSocket <span style="color: green;">!=</span> <span style="color: blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (m_pfnCallBack <span style="color: green;">==</span> <span style="color: blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_pfnCallBack <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">AsyncCallback</span>(OnDataReceived);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">SocketPacket</span> theSocPkt <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">SocketPacket</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>theSocPkt<span style="color: green;">.</span>thisSocket <span style="color: green;">=</span> m_clientSocket;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Start listening to the data asynchronously</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_result <span style="color: green;">=</span> m_clientSocket<span style="color: green;">.</span>BeginReceive(theSocPkt<span style="color: green;">.</span>dataBuffer,</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span><span style="color: navy;">0</span>, theSocPkt<span style="color: green;">.</span>dataBuffer<span style="color: green;">.</span>Length,</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">SocketFlags</span><span style="color: green;">.</span>None,</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_pfnCallBack,</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span>theSocPkt);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>WriteToLogFile(<span style="color: red;">&#8220;Connected to &#8220;</span> <span style="color: green;">+</span> m_clientSocket<span style="color: green;">.</span>RemoteEndPoint<span style="color: green;">.</span>ToString());</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> (<span style="color: #2b91af;">SocketException</span> se)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">MessageBox</span><span style="color: green;">.</span>Show(se<span style="color: green;">.</span>Message);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> OnDataReceived(<span style="color: #2b91af;">IAsyncResult</span> asyn)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">SocketPacket</span> theSockId <span style="color: green;">=</span> (<span style="color: #2b91af;">SocketPacket</span>)asyn<span style="color: green;">.</span>AsyncState;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">try</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">int</span> iRx <span style="color: green;">=</span> theSockId<span style="color: green;">.</span>thisSocket<span style="color: green;">.</span>EndReceive(asyn);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">char</span>[] chars <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: blue;">char</span>[iRx <span style="color: green;">+</span> <span style="color: navy;">1</span>];</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>System<span style="color: green;">.</span>Text<span style="color: green;">.</span><span style="color: #2b91af;">Decoder</span> d <span style="color: green;">=</span> System<span style="color: green;">.</span>Text<span style="color: green;">.</span><span style="color: #2b91af;">Encoding</span><span style="color: green;">.</span>UTF8<span style="color: green;">.</span>GetDecoder();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">int</span> charLen <span style="color: green;">=</span> d<span style="color: green;">.</span>GetChars(theSockId<span style="color: green;">.</span>dataBuffer, <span style="color: navy;">0</span>, iRx, chars, <span style="color: navy;">0</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>System<span style="color: green;">.</span><span style="color: #2b91af;">String</span> szData <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span><span style="color: #2b91af;">String</span>(chars);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span>[] ClientCommand <span style="color: green;">=</span> SplitQuoted(szData, <span style="color: red;">&#8220;,\r\n\0&#8243;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>Processcommand(ClientCommand, theSockId);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>AppendRxText(szData <span style="color: green;">+</span> <span style="color: red;">&#8220;\r&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>WaitForData();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> (<span style="color: #2b91af;">ObjectDisposedException</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>WriteToLogFile(<span style="color: red;">&#8220;Socket has been closed&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>System<span style="color: green;">.</span>Diagnostics<span style="color: green;">.</span><span style="color: #2b91af;">Debugger</span><span style="color: green;">.</span>Log(<span style="color: navy;">0</span>, <span style="color: red;">&#8220;1&#8243;</span>, <span style="color: red;">&#8220;\nOnDataReceived: Socket has been closed\n&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> (<span style="color: #2b91af;">SocketException</span> se)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>AppendRxText(se<span style="color: green;">.</span>Message <span style="color: green;">+</span> <span style="color: red;">&#8220;: &#8220;</span> <span style="color: green;">+</span> theSockId<span style="color: green;">.</span>thisSocket<span style="color: green;">.</span>RemoteEndPoint);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (se<span style="color: green;">.</span>Message <span style="color: green;">==</span> <span style="color: red;">&#8220;An existing connection was forcibly closed by the remote host&#8221;</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span>WriteToLogFile(<span style="color: red;">&#8220;Connection closed by remote host&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>ClosedownSocket();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">else</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">MessageBox</span><span style="color: green;">.</span>Show(se<span style="color: green;">.</span>Message);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#endregion</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> private methods</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#region</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> public methods</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Action to be performed by RetryOpen</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;returns&gt;&lt;/returns&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">delegate</span> T <span style="color: #2b91af;">RetryOpenDelegate</span><span style="color: green;">&lt;</span>T<span style="color: green;">&gt;</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Perform an action until succeeds without throwing IOException</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;typeparam name=&#8221;T&#8221;&gt;</span><span style="color: green;">object returned</span><span style="color: gray;">&lt;/typeparam&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;action&#8221;&gt;</span><span style="color: green;">action performed</span><span style="color: gray;">&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;returns&gt;&lt;/returns&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">static</span> T RetryOpen<span style="color: green;">&lt;</span>T<span style="color: green;">&gt;</span>(<span style="color: #2b91af;">RetryOpenDelegate</span><span style="color: green;">&lt;</span>T<span style="color: green;">&gt;</span> action)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">while</span> (<span style="color: blue;">true</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">try</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">return</span> action();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> (<span style="color: #2b91af;">IOException</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span>System<span style="color: green;">.</span>Threading<span style="color: green;">.</span><span style="color: #2b91af;">Thread</span><span style="color: green;">.</span>Sleep(<span style="color: navy;">50</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">static</span> <span style="color: blue;">void</span> WriteToLogFile(<span style="color: blue;">string</span> msg)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// create our daily directory</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> dir <span style="color: green;">=</span> <span style="color: #2b91af;">Application</span><span style="color: green;">.</span>StartupPath <span style="color: green;">+</span> <span style="color: red;">&#8220;\\logs\\&#8221;</span> <span style="color: green;">+</span> <span style="color: #2b91af;">DateTime</span><span style="color: green;">.</span>Now<span style="color: green;">.</span>ToString(<span style="color: red;">&#8220;ddMMyyyy&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (<span style="color: green;">!</span><span style="color: #2b91af;">Directory</span><span style="color: green;">.</span>Exists(dir))</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">Directory</span><span style="color: green;">.</span>CreateDirectory(dir);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> LogFile <span style="color: green;">=</span> dir <span style="color: green;">+</span> <span style="color: red;">&#8220;\\&#8221;</span> <span style="color: green;">+</span> <span style="color: #2b91af;">DateTime</span><span style="color: green;">.</span>Now<span style="color: green;">.</span>ToString(<span style="color: red;">&#8220;ddMMyyyy&#8221;</span>) <span style="color: green;">+</span> <span style="color: red;">&#8220;_Client_log.txt&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">TextWriter</span> tw <span style="color: green;">=</span> <span style="color: blue;">null</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">try</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// create a writer and open the file</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>tw <span style="color: green;">=</span> RetryOpen<span style="color: green;">&lt;</span><span style="color: #2b91af;">StreamWriter</span><span style="color: green;">&gt;</span>(<span style="color: blue;">delegate</span>()</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">return</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">StreamWriter</span>(LogFile, <span style="color: blue;">true</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>});</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// write a line of text to the file</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>tw<span style="color: green;">.</span>WriteLine(<span style="color: #2b91af;">DateTime</span><span style="color: green;">.</span>Now <span style="color: green;">+</span> <span style="color: red;">&#8220;: &#8216;&#8221;</span> <span style="color: green;">+</span> <span style="color: #2b91af;">Environment</span><span style="color: green;">.</span>MachineName <span style="color: green;">+</span> <span style="color: red;">&#8220;&#8216; &#8211; &#8220;</span> <span style="color: green;">+</span> msg);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> { }</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">finally</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// close the stream</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span><span style="color: blue;">if</span> (tw <span style="color: green;">!=</span> <span style="color: blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>tw<span style="color: green;">.</span>Close();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>tw<span style="color: green;">.</span>Dispose();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Splits any string using seperators string.<span> </span>This is different from the</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> string.Split method as we ignore delimiters inside double quotes and</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> will *ignore multiple delimiters in a row (i.e. &#8220;One,,,,two&#8221; will split</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> to two fields if comma is a delimiter).</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Example:</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Delims: &#8221; \t,&#8221; (space, tab, comma)</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Input: &#8220;one two&#8221; three four,five</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Returns (4 strings):</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> one two</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> three</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> four</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> five</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;text&#8221;&gt;</span><span style="color: green;">The string to split.</span><span style="color: gray;">&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;delimiters&#8221;&gt;</span><span style="color: green;">The characters to split on.</span><span style="color: gray;">&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;returns&gt;&lt;/returns&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">static</span> <span style="color: blue;">string</span>[] SplitQuoted(<span style="color: blue;">string</span> text, <span style="color: blue;">string</span> delimiters)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Default delimiters are a space and tab (e.g. &#8221; \t&#8221;).</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// All delimiters not inside quote pair are ignored. </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Default quotes pair is two double quotes ( e.g. &#8216;&#8221;"&#8216; ).</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (text <span style="color: green;">==</span> <span style="color: blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">throw</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">ArgumentNullException</span>(<span style="color: red;">&#8220;text&#8221;</span>, <span style="color: red;">&#8220;text is null.&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (delimiters <span style="color: green;">==</span> <span style="color: blue;">null</span> <span style="color: green;">||</span> delimiters<span style="color: green;">.</span>Length <span style="color: green;">&lt;</span> <span style="color: navy;">1</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>delimiters <span style="color: green;">=</span> <span style="color: red;">&#8221; \t&#8221;</span>; <span style="color: green;">// Default is a space and tab.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: green;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">ArrayList</span> res <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">ArrayList</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Build the pattern that searches for both quoted and unquoted elements</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// notice that the quoted element is defined by group #2 (g1)</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// and the unquoted element is defined by group #3 (g2).</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: green;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> pattern <span style="color: green;">=</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #a31515;">@&#8221;"&#8221;([^""\\]*[\\.[^""\\]*]*)&#8221;"&#8221;</span> <span style="color: green;">+</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: red;">&#8220;|&#8221;</span> <span style="color: green;">+</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #a31515;">@&#8221;([^"</span> <span style="color: green;">+</span> delimiters <span style="color: green;">+</span> <span style="color: #a31515;">@"]+)&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Search the string.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">foreach</span> (System<span style="color: green;">.</span>Text<span style="color: green;">.</span>RegularExpressions<span style="color: green;">.</span><span style="color: #2b91af;">Match</span> m <span style="color: blue;">in</span> System<span style="color: green;">.</span>Text<span style="color: green;">.</span>RegularExpressions<span style="color: green;">.</span><span style="color: #2b91af;">Regex</span><span style="color: green;">.</span>Matches(text, pattern))</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">//string g0 = m.Groups[0].Value;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> g1 <span style="color: green;">=</span> m<span style="color: green;">.</span>Groups[<span style="color: navy;">1</span>]<span style="color: green;">.</span>Value;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> g2 <span style="color: green;">=</span> m<span style="color: green;">.</span>Groups[<span style="color: navy;">2</span>]<span style="color: green;">.</span>Value;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (g2 <span style="color: green;">!=</span> <span style="color: blue;">null</span> <span style="color: green;">&amp;&amp;</span> g2<span style="color: green;">.</span>Length <span style="color: green;">&gt;</span> <span style="color: navy;">0</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>res<span style="color: green;">.</span>Add(g2);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">else</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// get the quoted string, but without the quotes in g1;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>res<span style="color: green;">.</span>Add(g1);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">return</span> (<span style="color: blue;">string</span>[])res<span style="color: green;">.</span>ToArray(<span style="color: blue;">typeof</span>(<span style="color: blue;">string</span>));</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#endregion</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> public methods</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#region</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> socketpacket class</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">SocketPacket</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> System<span style="color: green;">.</span>Net<span style="color: green;">.</span>Sockets<span style="color: green;">.</span><span style="color: #2b91af;">Socket</span> thisSocket;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">byte</span>[] dataBuffer <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: blue;">byte</span>[<span style="color: navy;">1024</span>];</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#endregion</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> socketpacket class</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;">}</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">This is the main body of the application. Compile and run the code and at the same time have the server running.</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">The client will automatically try to connect to the server (see the timer code to see how) and once established send keep alive messages to let the server know it’s there. These will also be returned to the client and displayed accordingly.</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">Try sending some text, you will see it appear in the server and then be returned to the client.</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">Try this, add the following line into the text box on the client and send it:</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">showmessage,Hello from client</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">You should get a message box popup with your ‘Hello from client’ text.</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">That’s all there is to it. Simple eh!</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">Have fun and let me know if you make any modifications to improve it all</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">Si</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xploiter.com/c-and-aspnet/client-socket-programming-in-c-using-the-built-in-libraries-a-fully-working-production-example-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Socket Programming in C# using the built in libraries &#8211; a fully working production example Part 1</title>
		<link>http://blog.xploiter.com/c-and-aspnet/socket-programming-in-c-using-the-built-in-libraries-a-fully-working-production-example-part-1/</link>
		<comments>http://blog.xploiter.com/c-and-aspnet/socket-programming-in-c-using-the-built-in-libraries-a-fully-working-production-example-part-1/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 10:15:24 +0000</pubDate>
		<dc:creator>Simon Steed</dc:creator>
				<category><![CDATA[C# and ASP.Net]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[delegates]]></category>
		<category><![CDATA[dotnet]]></category>
		<category><![CDATA[Encoding]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[ExceptionHandler]]></category>
		<category><![CDATA[framework 2.0]]></category>
		<category><![CDATA[framework 3.5]]></category>
		<category><![CDATA[messaging]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[OnDataReceived]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[SocketException]]></category>
		<category><![CDATA[SocketPacket]]></category>
		<category><![CDATA[sockets]]></category>
		<category><![CDATA[tcp]]></category>
		<category><![CDATA[tcpip]]></category>
		<category><![CDATA[threading]]></category>
		<category><![CDATA[threads]]></category>
		<category><![CDATA[visual studio]]></category>
		<category><![CDATA[vs2005]]></category>
		<category><![CDATA[vs2008]]></category>
		<category><![CDATA[WaitForData]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blog.xploiter.com/?p=77</guid>
		<description><![CDATA[One of the things i've noticed over the last few months in particular is the lack of decent programming examples in C# for a suitable client/server socket solution that just works! I was working on a contract that needed a robust and stable communications mechanism between multiple PC's on a closed network for a Railway Simulator and Aircraft Simulator I was working on.]]></description>
			<content:encoded><![CDATA[<p><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!--[if !mso]><span class="mceItemObject"   classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui></span><br />
<mce:style><!  st1\:*{behavior:url(#ieooui) } --></p>
<p><!--[endif]--> <!--[if gte mso 10]><br />
<mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman"; 	mso-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} --></p>
<p><!--[endif]--></p>
<p class="MsoNormal"><span lang="EN-GB">One of the things i&#8217;ve noticed over the last few months in particular is the lack of decent programming examples in C# for a suitable client/server socket solution that just works! I was working on a contract that needed a robust and stable communications mechanism between multiple PC&#8217;s on a closed network for a Railway Simulator and Aircraft Simulator I was working on.</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">The following Server code is the first part of this two part article. It shows you how to code a solid and reliable server with error and message handling. Part two will explain how to code a client to go along with it.</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">Now i&#8217;m not naive enough to state there are no bugs in this code but it does work and work well. I would love to hear any comments from any developers that can help improve this code. The original code base I took from a couple of articles at the following URL&#8217;s, credit to the original authors:</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB"><a href="http://www.developerfusion.co.uk/forums/p/36657/126609/#126609">http://www.developerfusion.co.uk/forums/p/36657/126609/#126609</a></span></p>
<p class="MsoNormal"><span lang="EN-GB"><a href="http://www.codeguru.com/Csharp/Csharp/cs_network/sockets/article.php/c8781/">http://www.codeguru.com/Csharp/Csharp/cs_network/sockets/article.php/c8781/</a></span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">OK here goes, simply copy this code into the relevant files within a new solution. Bear in mind i&#8217;m using VS2008 here so you may need to modify the code accordingly for your environment. Should work fine in VS2005 with slight mods, not sure about VS2003</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><strong><span style="text-decoration: underline;"><span lang="EN-GB">App.Config</span></span></strong></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">&lt;?</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: #a31515;">xml</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"> </span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: red;">version</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">=</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;">&#8220;<span style="color: blue;">1.0</span>&#8220;<span style="color: blue;"> </span><span style="color: red;">encoding</span><span style="color: blue;">=</span>&#8220;<span style="color: blue;">utf-8</span>&#8220;<span style="color: blue;"> ?&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">&lt;</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: #a31515;">configuration</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">&gt;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>&lt;</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: #a31515;">appSettings</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">&gt;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>&lt;</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: #a31515;">add</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"> </span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: red;">key</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">=</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;">&#8220;<span style="color: blue;">ServerPort</span>&#8220;<span style="color: blue;"> </span><span style="color: red;">value</span><span style="color: blue;">=</span>&#8220;<span style="color: blue;">10001</span>&#8220;<span style="color: blue;"> /&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>&lt;/</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: #a31515;">appSettings</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">&gt;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">&lt;/</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: #a31515;">configuration</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">&gt;</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">This defines the port that server will listen on.</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><strong><span style="text-decoration: underline;"><span lang="EN-GB">Program.cs</span></span></strong></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Collections<span style="color: green;">.</span>Generic;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Linq;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Threading;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">namespace</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> SocketServer</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;">{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">static</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">Program</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> The main entry point for the application.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>[<span style="color: #2b91af;">STAThread</span>]</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">static</span> <span style="color: blue;">void</span> Main()</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">Application</span><span style="color: green;">.</span>EnableVisualStyles();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">Application</span><span style="color: green;">.</span>SetCompatibleTextRenderingDefault(<span style="color: blue;">false</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">Application</span><span style="color: green;">.</span>ThreadException <span style="color: green;">+=</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">ThreadExceptionEventHandler</span>(Application_ThreadException);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">Application</span><span style="color: green;">.</span>Run(<span style="color: blue;">new</span> <span style="color: #2b91af;">Server</span>());</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">static</span> <span style="color: blue;">void</span> Application_ThreadException(<span style="color: blue;">object</span> sender, <span style="color: #2b91af;">ThreadExceptionEventArgs</span> e)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">Server</span><span style="color: green;">.</span>WriteToLogFile(<span style="color: #2b91af;">ExceptionHandler</span><span style="color: green;">.</span>DisplayMessage(e<span style="color: green;">.</span>Exception)); </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">MessageBox</span><span style="color: green;">.</span>Show(<span style="color: #2b91af;">ExceptionHandler</span><span style="color: green;">.</span>DisplayMessage(e<span style="color: green;">.</span>Exception));</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;">}</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">This is the starting point for the application. I&#8217;m also making use of the ExceptionHandler class I recently spoke about in my blog.</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><strong><span style="text-decoration: underline;"><span lang="EN-GB">ExceptionHandler.cs</span></span></strong></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Collections<span style="color: green;">.</span>Generic;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Linq;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Text;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Data;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Data<span style="color: green;">.</span>SqlClient;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Windows;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">namespace</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> SocketServer</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;">{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Handles displaying error messages</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">ExceptionHandler</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Takes the exception message and displays a meaningful message to the user</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">static</span> <span style="color: blue;">string</span> DisplayMessage(<span style="color: #2b91af;">Exception</span> ex)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">return</span> DisplayMessage(ex, <span style="color: red;">&#8220;&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Takes the exception message and displays a meaningful message to the user</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> The exception to display.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Current User</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">//[System.Diagnostics.DebuggerStepThrough()]</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">static</span> <span style="color: blue;">string</span> DisplayMessage(<span style="color: #2b91af;">Exception</span> ex, <span style="color: blue;">string</span> userName)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">StringBuilder</span> sb <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">StringBuilder</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (ex <span style="color: blue;">is</span> <span style="color: #2b91af;">DBConcurrencyException</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Concurrency Error: One or more people have updated this data since your last request.&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">else</span> <span style="color: blue;">if</span> (ex <span style="color: blue;">is</span> <span style="color: #2b91af;">SqlException</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Database Error: &#8220;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">switch</span> (((<span style="color: #2b91af;">SqlException</span>)ex)<span style="color: green;">.</span>Number)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">case</span> <span style="color: navy;">547</span>:</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;There is a constraint on the items you tried to modify. Please try again.&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">case</span> <span style="color: navy;">2601</span>:</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Unique Index</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Cannot insert duplicate values into the database.&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">case</span> <span style="color: navy;">2627</span>:</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Unique Constraint</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Cannot insert duplicate values into the database.&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">default</span>:</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(ex<span style="color: green;">.</span>Message);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">else</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Exception Handler Unexpected Error: &#8220;</span> <span style="color: green;">+</span> ex<span style="color: green;">.</span>Message);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> nl <span style="color: green;">=</span> <span style="color: red;">&#8220;\n\n&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(nl <span style="color: green;">+</span> <span style="color: red;">&#8220;Exception Information:&#8221;</span> <span style="color: green;">+</span> nl);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Message: &#8220;</span> <span style="color: green;">+</span> ex<span style="color: green;">.</span>Message <span style="color: green;">+</span> nl);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Source: &#8220;</span> <span style="color: green;">+</span> ex<span style="color: green;">.</span>Source <span style="color: green;">+</span> nl);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Stack Trace: &#8220;</span> <span style="color: green;">+</span> ex<span style="color: green;">.</span>StackTrace <span style="color: green;">+</span> nl);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (ex<span style="color: green;">.</span>InnerException <span style="color: green;">!=</span> <span style="color: blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(nl <span style="color: green;">+</span> <span style="color: red;">&#8220;Inner Exception Info:&#8221;</span> <span style="color: green;">+</span> nl);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Message: &#8220;</span> <span style="color: green;">+</span> ex<span style="color: green;">.</span>InnerException<span style="color: green;">.</span>Message <span style="color: green;">+</span> nl);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Source: &#8220;</span> <span style="color: green;">+</span> ex<span style="color: green;">.</span>InnerException<span style="color: green;">.</span>Source <span style="color: green;">+</span> nl);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>sb<span style="color: green;">.</span>Append(<span style="color: red;">&#8220;Stack Trace: &#8220;</span> <span style="color: green;">+</span> ex<span style="color: green;">.</span>InnerException<span style="color: green;">.</span>StackTrace <span style="color: green;">+</span> nl);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">return</span> sb<span style="color: green;">.</span>ToString();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;">}</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><strong><span style="text-decoration: underline;"><span lang="EN-GB">UtilityFunctions.cs</span></span></strong></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Collections<span style="color: green;">.</span>Generic;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Linq;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Text;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Net;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Net<span style="color: green;">.</span>Sockets;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Collections;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">namespace</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> SocketServer</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;">{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">class</span> <span style="color: #2b91af;">UtilityFunctions</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">static</span> <span style="color: #2b91af;">String</span> GetIP()</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">String</span> strHostName <span style="color: green;">=</span> <span style="color: #2b91af;">Dns</span><span style="color: green;">.</span>GetHostName();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Find host by name</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">IPHostEntry</span> iphostentry <span style="color: green;">=</span> <span style="color: #2b91af;">Dns</span><span style="color: green;">.</span>GetHostEntry(strHostName);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Grab the first IP addresses</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">String</span> IPStr <span style="color: green;">=</span> <span style="color: red;">&#8220;&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">foreach</span> (<span style="color: #2b91af;">IPAddress</span> ipaddress <span style="color: blue;">in</span> iphostentry<span style="color: green;">.</span>AddressList)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>IPStr <span style="color: green;">=</span> ipaddress<span style="color: green;">.</span>ToString();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">return</span> IPStr;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">return</span> IPStr;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Splits any string using seperators string.<span> </span>This is different from the</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> string.Split method as we ignore delimiters inside double quotes and</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> will *ignore multiple delimiters in a row (i.e. &#8220;One,,,,two&#8221; will split</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> to two fields if comma is a delimiter).</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Example:</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Delims: &#8221; \t,&#8221; (space, tab, comma)</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Input: &#8220;one two&#8221; three four,five</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Returns (4 strings):</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> one two</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> three</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> four</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> five</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;text&#8221;&gt;</span><span style="color: green;">The string to split.</span><span style="color: gray;">&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;delimiters&#8221;&gt;</span><span style="color: green;">The characters to split on.</span><span style="color: gray;">&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;returns&gt;&lt;/returns&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">static</span> <span style="color: blue;">string</span>[] SplitQuoted(<span style="color: blue;">string</span> text, <span style="color: blue;">string</span> delimiters)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Default delimiters are a space and tab (e.g. &#8221; \t&#8221;).</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// All delimiters not inside quote pair are ignored. </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Default quotes pair is two double quotes ( e.g. &#8216;&#8221;"&#8216; ).</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (text <span style="color: green;">==</span> <span style="color: blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">throw</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">ArgumentNullException</span>(<span style="color: red;">&#8220;text&#8221;</span>, <span style="color: red;">&#8220;text is null.&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (delimiters <span style="color: green;">==</span> <span style="color: blue;">null</span> <span style="color: green;">||</span> delimiters<span style="color: green;">.</span>Length <span style="color: green;">&lt;</span> <span style="color: navy;">1</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>delimiters <span style="color: green;">=</span> <span style="color: red;">&#8221; \t&#8221;</span>; <span style="color: green;">// Default is a space and tab.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: green;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">ArrayList</span> res <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">ArrayList</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Build the pattern that searches for both quoted and unquoted elements</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// notice that the quoted element is defined by group #2 (g1)</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// and the unquoted element is defined by group #3 (g2).</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: green;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> pattern <span style="color: green;">=</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #a31515;">@&#8221;"&#8221;([^""\\]*[\\.[^""\\]*]*)&#8221;"&#8221;</span> <span style="color: green;">+</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: red;">&#8220;|&#8221;</span> <span style="color: green;">+</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #a31515;">@&#8221;([^"</span> <span style="color: green;">+</span> delimiters <span style="color: green;">+</span> <span style="color: #a31515;">@"]+)&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Search the string.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">foreach</span> (System<span style="color: green;">.</span>Text<span style="color: green;">.</span>RegularExpressions<span style="color: green;">.</span><span style="color: #2b91af;">Match</span> m <span style="color: blue;">in</span> System<span style="color: green;">.</span>Text<span style="color: green;">.</span>RegularExpressions<span style="color: green;">.</span><span style="color: #2b91af;">Regex</span><span style="color: green;">.</span>Matches(text, pattern))</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">//string g0 = m.Groups[0].Value;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> g1 <span style="color: green;">=</span> m<span style="color: green;">.</span>Groups[<span style="color: navy;">1</span>]<span style="color: green;">.</span>Value;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> g2 <span style="color: green;">=</span> m<span style="color: green;">.</span>Groups[<span style="color: navy;">2</span>]<span style="color: green;">.</span>Value;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (g2 <span style="color: green;">!=</span> <span style="color: blue;">null</span> <span style="color: green;">&amp;&amp;</span> g2<span style="color: green;">.</span>Length <span style="color: green;">&gt;</span> <span style="color: navy;">0</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>res<span style="color: green;">.</span>Add(g2);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">else</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// get the quoted string, but without the quotes in g1;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>res<span style="color: green;">.</span>Add(g1);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">return</span> (<span style="color: blue;">string</span>[])res<span style="color: green;">.</span>ToArray(<span style="color: blue;">typeof</span>(<span style="color: blue;">string</span>));</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;">}</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">Just a couple of general routines we can call upon. I tend to add things like this to a separate class as it makes things nice and tidy.</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><strong><span style="text-decoration: underline;"><span lang="EN-GB">SocketServer.Designer.cs</span></span></strong></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">namespace</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> SocketServer</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;">{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">partial</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">Server</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Required designer variable.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> System<span style="color: green;">.</span>ComponentModel<span style="color: green;">.</span><span style="color: #2b91af;">IContainer</span> components <span style="color: green;">=</span> <span style="color: blue;">null</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Clean up any resources being used.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;disposing&#8221;&gt;</span><span style="color: green;">true if managed resources should be disposed; otherwise, false.</span><span style="color: gray;">&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">protected</span> <span style="color: blue;">override</span> <span style="color: blue;">void</span> Dispose(<span style="color: blue;">bool</span> disposing)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (disposing <span style="color: green;">&amp;&amp;</span> (components <span style="color: green;">!=</span> <span style="color: blue;">null</span>))</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>components<span style="color: green;">.</span>Dispose();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">base</span><span style="color: green;">.</span>Dispose(disposing);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#region</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> Windows Form Designer generated code</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Required method for Designer support &#8211; do not modify</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> the contents of this method with the code editor.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> InitializeComponent()</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label1 <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">Label</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1 <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">GroupBox</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextBoxSendMsg <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">RichTextBox</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>btnClear <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">Button</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextBoxReceivedMsg <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">RichTextBox</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label8 <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">Label</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonSendMsg <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">Button</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>SuspendLayout();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>SuspendLayout();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// label1</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label1<span style="color: green;">.</span>AutoSize <span style="color: green;">=</span> <span style="color: blue;">true</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label1<span style="color: green;">.</span>Font <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Font</span>(<span style="color: red;">&#8220;Microsoft Sans Serif&#8221;</span>, <span style="color: navy;">11F</span>, System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">FontStyle</span><span style="color: green;">.</span>Bold, System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">GraphicsUnit</span><span style="color: green;">.</span>Point, ((<span style="color: blue;">byte</span>)(<span style="color: navy;">0</span>)));</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label1<span style="color: green;">.</span>Location <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Point</span>(<span style="color: navy;">360</span>, <span style="color: navy;">9</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label1<span style="color: green;">.</span>Name <span style="color: green;">=</span> <span style="color: red;">&#8220;label1&#8243;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label1<span style="color: green;">.</span>Size <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Size</span>(<span style="color: navy;">115</span>, <span style="color: navy;">18</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label1<span style="color: green;">.</span>TabIndex <span style="color: green;">=</span> <span style="color: navy;">7</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label1<span style="color: green;">.</span>Text <span style="color: green;">=</span> <span style="color: red;">&#8220;Socket Server&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// groupBox1</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Controls<span style="color: green;">.</span>Add(<span style="color: blue;">this</span><span style="color: green;">.</span>richTextBoxSendMsg);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Controls<span style="color: green;">.</span>Add(<span style="color: blue;">this</span><span style="color: green;">.</span>label1);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Controls<span style="color: green;">.</span>Add(<span style="color: blue;">this</span><span style="color: green;">.</span>btnClear);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Controls<span style="color: green;">.</span>Add(<span style="color: blue;">this</span><span style="color: green;">.</span>richTextBoxReceivedMsg);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Controls<span style="color: green;">.</span>Add(<span style="color: blue;">this</span><span style="color: green;">.</span>label8);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Controls<span style="color: green;">.</span>Add(<span style="color: blue;">this</span><span style="color: green;">.</span>buttonSendMsg);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Dock <span style="color: green;">=</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">DockStyle</span><span style="color: green;">.</span>Fill;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Location <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Point</span>(<span style="color: navy;">0</span>, <span style="color: navy;">0</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Name <span style="color: green;">=</span> <span style="color: red;">&#8220;groupBox1&#8243;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>Size <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Size</span>(<span style="color: navy;">477</span>, <span style="color: navy;">298</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>TabIndex <span style="color: green;">=</span> <span style="color: navy;">22</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>TabStop <span style="color: green;">=</span> <span style="color: blue;">false</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// richTextBoxSendMsg</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextBoxSendMsg<span style="color: green;">.</span>Location <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Point</span>(<span style="color: navy;">6</span>, <span style="color: navy;">27</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextBoxSendMsg<span style="color: green;">.</span>Name <span style="color: green;">=</span> <span style="color: red;">&#8220;richTextBoxSendMsg&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextBoxSendMsg<span style="color: green;">.</span>Size <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Size</span>(<span style="color: navy;">183</span>, <span style="color: navy;">21</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextBoxSendMsg<span style="color: green;">.</span>TabIndex <span style="color: green;">=</span> <span style="color: navy;">45</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextBoxSendMsg<span style="color: green;">.</span>Text <span style="color: green;">=</span> <span style="color: red;">&#8220;&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// btnClear</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>btnClear<span style="color: green;">.</span>Location <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Point</span>(<span style="color: navy;">287</span>, <span style="color: navy;">27</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>btnClear<span style="color: green;">.</span>Name <span style="color: green;">=</span> <span style="color: red;">&#8220;btnClear&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>btnClear<span style="color: green;">.</span>Size <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Size</span>(<span style="color: navy;">88</span>, <span style="color: navy;">24</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>btnClear<span style="color: green;">.</span>TabIndex <span style="color: green;">=</span> <span style="color: navy;">43</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>btnClear<span style="color: green;">.</span>Text <span style="color: green;">=</span> <span style="color: red;">&#8220;Clear&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>btnClear<span style="color: green;">.</span>Click <span style="color: green;">+=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span><span style="color: #2b91af;">EventHandler</span>(<span style="color: blue;">this</span><span style="color: green;">.</span>btnClear_Click);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// richTextBoxReceivedMsg</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextBoxReceivedMsg<span style="color: green;">.</span>BackColor <span style="color: green;">=</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">SystemColors</span><span style="color: green;">.</span>InactiveCaptionText;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextBoxReceivedMsg<span style="color: green;">.</span>Dock <span style="color: green;">=</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">DockStyle</span><span style="color: green;">.</span>Bottom;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextBoxReceivedMsg<span style="color: green;">.</span>Font <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Font</span>(<span style="color: red;">&#8220;Microsoft Sans Serif&#8221;</span>, <span style="color: navy;">7F</span>, System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">FontStyle</span><span style="color: green;">.</span>Regular, System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">GraphicsUnit</span><span style="color: green;">.</span>Point, ((<span style="color: blue;">byte</span>)(<span style="color: navy;">0</span>)));</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextBoxReceivedMsg<span style="color: green;">.</span>Location <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Point</span>(<span style="color: navy;">3</span>, <span style="color: navy;">57</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextBoxReceivedMsg<span style="color: green;">.</span>Name <span style="color: green;">=</span> <span style="color: red;">&#8220;richTextBoxReceivedMsg&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextBoxReceivedMsg<span style="color: green;">.</span>ReadOnly <span style="color: green;">=</span> <span style="color: blue;">true</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextBoxReceivedMsg<span style="color: green;">.</span>Size <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Size</span>(<span style="color: navy;">471</span>, <span style="color: navy;">238</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextBoxReceivedMsg<span style="color: green;">.</span>TabIndex <span style="color: green;">=</span> <span style="color: navy;">35</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>richTextBoxReceivedMsg<span style="color: green;">.</span>Text <span style="color: green;">=</span> <span style="color: red;">&#8220;&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// label8</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label8<span style="color: green;">.</span>Location <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Point</span>(<span style="color: navy;">3</span>, <span style="color: navy;">15</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label8<span style="color: green;">.</span>Name <span style="color: green;">=</span> <span style="color: red;">&#8220;label8&#8243;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label8<span style="color: green;">.</span>Size <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Size</span>(<span style="color: navy;">158</span>, <span style="color: navy;">20</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label8<span style="color: green;">.</span>TabIndex <span style="color: green;">=</span> <span style="color: navy;">34</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>label8<span style="color: green;">.</span>Text <span style="color: green;">=</span> <span style="color: red;">&#8220;Broadcast Message To Clients&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// buttonSendMsg</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonSendMsg<span style="color: green;">.</span>Location <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Point</span>(<span style="color: navy;">192</span>, <span style="color: navy;">27</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonSendMsg<span style="color: green;">.</span>Name <span style="color: green;">=</span> <span style="color: red;">&#8220;buttonSendMsg&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonSendMsg<span style="color: green;">.</span>Size <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Size</span>(<span style="color: navy;">89</span>, <span style="color: navy;">24</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonSendMsg<span style="color: green;">.</span>TabIndex <span style="color: green;">=</span> <span style="color: navy;">33</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonSendMsg<span style="color: green;">.</span>Text <span style="color: green;">=</span> <span style="color: red;">&#8220;Send Message&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>buttonSendMsg<span style="color: green;">.</span>Click <span style="color: green;">+=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span><span style="color: #2b91af;">EventHandler</span>(<span style="color: blue;">this</span><span style="color: green;">.</span>buttonSendMsg_Click);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Server</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>AcceptButton <span style="color: green;">=</span> <span style="color: blue;">this</span><span style="color: green;">.</span>btnClear;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>AutoScaleDimensions <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">SizeF</span>(<span style="color: navy;">6F</span>, <span style="color: navy;">13F</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>AutoScaleMode <span style="color: green;">=</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">AutoScaleMode</span><span style="color: green;">.</span>Font;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>ClientSize <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Drawing<span style="color: green;">.</span><span style="color: #2b91af;">Size</span>(<span style="color: navy;">477</span>, <span style="color: navy;">298</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>Controls<span style="color: green;">.</span>Add(<span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>FormBorderStyle <span style="color: green;">=</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">FormBorderStyle</span><span style="color: green;">.</span>Fixed3D;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>Name <span style="color: green;">=</span> <span style="color: red;">&#8220;Server&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>SizeGripStyle <span style="color: green;">=</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">SizeGripStyle</span><span style="color: green;">.</span>Hide;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>StartPosition <span style="color: green;">=</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">FormStartPosition</span><span style="color: green;">.</span>CenterScreen;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>Load <span style="color: green;">+=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span><span style="color: #2b91af;">EventHandler</span>(<span style="color: blue;">this</span><span style="color: green;">.</span>LaunchForm_Load);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>FormClosed <span style="color: green;">+=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">FormClosedEventHandler</span>(<span style="color: blue;">this</span><span style="color: green;">.</span>Server_FormClosed);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>ResumeLayout(<span style="color: blue;">false</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>groupBox1<span style="color: green;">.</span>PerformLayout();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">this</span><span style="color: green;">.</span>ResumeLayout(<span style="color: blue;">false</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#endregion</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">Label</span> label1;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">GroupBox</span> groupBox1;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">Button</span> btnClear;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">RichTextBox</span> richTextBoxReceivedMsg;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">Label</span> label8;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">Button</span> buttonSendMsg;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms<span style="color: green;">.</span><span style="color: #2b91af;">RichTextBox</span> richTextBoxSendMsg;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;">}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><strong><span style="text-decoration: underline;"><span lang="EN-GB">SocketServer.cs</span></span></strong></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Collections<span style="color: green;">.</span>Generic;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>ComponentModel;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Data;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Drawing;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Linq;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Text;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Windows<span style="color: green;">.</span>Forms;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Diagnostics;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Threading;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>IO;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Net;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Net<span style="color: green;">.</span>Sockets;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Collections;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Reflection;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> System<span style="color: green;">.</span>Configuration;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;">namespace</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> SocketServer</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;">{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">partial</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">Server</span> : <span style="color: #2b91af;">Form</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#region</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> socket stuff</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// sample code and basis of client/server app taken from the following url&#8217;s</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// http://www.developerfusion.co.uk/forums/p/36657/126609/#126609</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// http://www.codeguru.com/Csharp/Csharp/cs_network/sockets/article.php/c8781/</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">delegate</span> <span style="color: blue;">void</span> <span style="color: #2b91af;">UpdateRichEditCallback</span>(<span style="color: blue;">string</span> text);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">delegate</span> <span style="color: blue;">void</span> <span style="color: #2b91af;">UpdateClientListCallback</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: #2b91af;">AsyncCallback</span> pfnWorkerCallBack;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: #2b91af;">Socket</span> m_mainSocket;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// An ArrayList is used to keep track of worker sockets that are designed</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// to communicate with each connected client. Make it a synchronized ArrayList</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// For thread safety</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> System<span style="color: green;">.</span>Collections<span style="color: green;">.</span><span style="color: #2b91af;">ArrayList</span> m_workerSocketList <span style="color: green;">=</span> <span style="color: #2b91af;">ArrayList</span><span style="color: green;">.</span>Synchronized(<span style="color: blue;">new</span> System<span style="color: green;">.</span>Collections<span style="color: green;">.</span><span style="color: #2b91af;">ArrayList</span>());</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// This delegate enables asynchronous calls for setting</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// the text property on a TextBox control.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">delegate</span> <span style="color: blue;">void</span> <span style="color: #2b91af;">AppendTextCallback</span>(<span style="color: blue;">string</span> text);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// The following variable will keep track of the cumulative </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// total number of clients connected at any time. Since multiple threads</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// can access this variable, modifying this variable should be done</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// in a thread safe manner</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">int</span> m_clientCount <span style="color: green;">=</span> <span style="color: navy;">0</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">Dictionary</span><span style="color: green;">&lt;</span><span style="color: blue;">string</span>, <span style="color: blue;">int</span><span style="color: green;">&gt;</span> SocketMachineID <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">Dictionary</span><span style="color: green;">&lt;</span><span style="color: blue;">string</span>, <span style="color: blue;">int</span><span style="color: green;">&gt;</span>(); <span style="color: green;">// int = socketid, string = machineid</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: green;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: green;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#endregion</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> socket stuff</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#region</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> private members</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">Int16</span> _Port <span style="color: green;">=</span> <span style="color: navy;">10001</span>; <span style="color: green;">// default port we listen on</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: green;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">bool</span> isClosing <span style="color: green;">=</span> <span style="color: blue;">false</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">byte</span>[] m_dataBuffer <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: blue;">byte</span>[<span style="color: navy;">10</span>];</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: #2b91af;">AsyncCallback</span> m_pfnCallBack;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: #2b91af;">Socket</span> m_clientSocket;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#endregion</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#region</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> constructor</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> Server()</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>InitializeComponent();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>_Port <span style="color: green;">=</span> <span style="color: #2b91af;">Convert</span><span style="color: green;">.</span>ToInt16(<span style="color: #2b91af;">ConfigurationManager</span><span style="color: green;">.</span>AppSettings[<span style="color: red;">"ServerPort"</span>]);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#endregion</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> constructor</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#region</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> private methods</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Search our dictionary to get the index of our socket to send the correct data down</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;Mode&#8221;&gt;</span><span style="color: green;">Client mode, we can identify our individual clients here, I will use Client for this example</span><span style="color: gray;">&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;returns&gt;</span><span style="color: green;">Integer contaning the socket id to pass into SendMsgToClient method</span><span style="color: gray;">&lt;/returns&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">int</span> GetModeFromDictionary(<span style="color: blue;">string</span> Mode)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">int</span> value <span style="color: green;">=</span> <span style="color: green;">-</span><span style="color: navy;">1</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>SocketMachineID<span style="color: green;">.</span>TryGetValue(Mode, <span style="color: blue;">out</span> value);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">return</span> value;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#endregion</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> private methods</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#region</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> event handlers</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Action to be performed by RetryOpen</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;returns&gt;&lt;/returns&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">delegate</span> T <span style="color: #2b91af;">RetryOpenDelegate</span><span style="color: green;">&lt;</span>T<span style="color: green;">&gt;</span>();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Perform an action until succeeds without throwing IOException</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;typeparam name=&#8221;T&#8221;&gt;</span><span style="color: green;">object returned</span><span style="color: gray;">&lt;/typeparam&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;action&#8221;&gt;</span><span style="color: green;">action performed</span><span style="color: gray;">&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;returns&gt;&lt;/returns&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">static</span> T RetryOpen<span style="color: green;">&lt;</span>T<span style="color: green;">&gt;</span>(<span style="color: #2b91af;">RetryOpenDelegate</span><span style="color: green;">&lt;</span>T<span style="color: green;">&gt;</span> action)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">while</span> (<span style="color: blue;">true</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">try</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">return</span> action();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> (<span style="color: #2b91af;">IOException</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>System<span style="color: green;">.</span>Threading<span style="color: green;">.</span><span style="color: #2b91af;">Thread</span><span style="color: green;">.</span>Sleep(<span style="color: navy;">50</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">static</span> <span style="color: blue;">void</span> WriteToLogFile(<span style="color: blue;">string</span> msg)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// create our daily directory</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> dir <span style="color: green;">=</span> <span style="color: #2b91af;">Application</span><span style="color: green;">.</span>StartupPath <span style="color: green;">+</span> <span style="color: red;">&#8220;\\logs\\&#8221;</span> <span style="color: green;">+</span> <span style="color: #2b91af;">DateTime</span><span style="color: green;">.</span>Now<span style="color: green;">.</span>ToString(<span style="color: red;">&#8220;ddMMyyyy&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (<span style="color: green;">!</span><span style="color: #2b91af;">Directory</span><span style="color: green;">.</span>Exists(dir))</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">Directory</span><span style="color: green;">.</span>CreateDirectory(dir);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> LogFile <span style="color: green;">=</span> dir <span style="color: green;">+</span> <span style="color: red;">&#8220;\\&#8221;</span> <span style="color: green;">+</span> <span style="color: #2b91af;">DateTime</span><span style="color: green;">.</span>Now<span style="color: green;">.</span>ToString(<span style="color: red;">&#8220;ddMMyyyy&#8221;</span>) <span style="color: green;">+</span> <span style="color: red;">&#8220;_Server_log.txt&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">TextWriter</span> tw <span style="color: green;">=</span> <span style="color: blue;">null</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">try</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// create a writer and open the file</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>tw <span style="color: green;">=</span> RetryOpen<span style="color: green;">&lt;</span><span style="color: #2b91af;">StreamWriter</span><span style="color: green;">&gt;</span>(<span style="color: blue;">delegate</span>()</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">return</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">StreamWriter</span>(LogFile, <span style="color: blue;">true</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>});</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// write a line of text to the file</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>tw<span style="color: green;">.</span>WriteLine(<span style="color: #2b91af;">DateTime</span><span style="color: green;">.</span>Now <span style="color: green;">+</span> <span style="color: red;">&#8220;: &#8216;&#8221;</span> <span style="color: green;">+</span> <span style="color: #2b91af;">Environment</span><span style="color: green;">.</span>MachineName <span style="color: green;">+</span> <span style="color: red;">&#8220;&#8216; &#8211; &#8220;</span> <span style="color: green;">+</span> msg);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> { }</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">finally</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span><span style="color: green;">// close the stream</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (tw <span style="color: green;">!=</span> <span style="color: blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>tw<span style="color: green;">.</span>Close();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>tw<span style="color: green;">.</span>Dispose();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> buttonSendMsg_Click(<span style="color: blue;">object</span> sender, <span style="color: #2b91af;">EventArgs</span> e)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>AppendToRichEditControl(<span style="color: red;">&#8220;User Sending Message :&#8221;</span> <span style="color: green;">+</span> richTextBoxSendMsg<span style="color: green;">.</span>Text);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>SendMsgToAllClients(richTextBoxSendMsg<span style="color: green;">.</span>Text);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> btnClear_Click(<span style="color: blue;">object</span> sender, <span style="color: #2b91af;">EventArgs</span> e)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>richTextBoxReceivedMsg<span style="color: green;">.</span>Clear();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">void</span> ExitApplication()</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>isClosing <span style="color: green;">=</span> <span style="color: blue;">true</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>SendMsgToClient(<span style="color: red;">&#8220;Shutdown&#8221;</span>, <span style="color: green;">-</span><span style="color: navy;">1</span>); <span style="color: green;">// broadcast message to all clients</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>Close();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> Server_FormClosed(<span style="color: blue;">object</span> sender, <span style="color: #2b91af;">FormClosedEventArgs</span> e)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (<span style="color: green;">!</span>isClosing)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>CloseSockets();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> LaunchForm_Load(<span style="color: blue;">object</span> sender, <span style="color: #2b91af;">EventArgs</span> e)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>StartServerListening(); <span style="color: green;">//Ensure our clients can find us by starting the server running</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#endregion</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> event handlers</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#region</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> Socket Methods</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> StartServerListening()</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">try</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Create the listening socket&#8230;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_mainSocket <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">Socket</span>(<span style="color: #2b91af;">AddressFamily</span><span style="color: green;">.</span>InterNetwork, <span style="color: #2b91af;">SocketType</span><span style="color: green;">.</span>Stream, <span style="color: #2b91af;">ProtocolType</span><span style="color: green;">.</span>Tcp);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">IPEndPoint</span> ipLocal <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">IPEndPoint</span>(<span style="color: #2b91af;">IPAddress</span><span style="color: green;">.</span>Any, _Port);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span><span style="color: green;">// Bind to local IP Address&#8230;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_mainSocket<span style="color: green;">.</span>Bind(ipLocal);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Start listening &#8211; allow 5 simultaneous connections&#8230;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_mainSocket<span style="color: green;">.</span>Listen(<span style="color: navy;">5</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Create the call back for any client connections&#8230;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_mainSocket<span style="color: green;">.</span>BeginAccept(<span style="color: blue;">new</span> <span style="color: #2b91af;">AsyncCallback</span>(OnClientConnect), <span style="color: blue;">null</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> (<span style="color: #2b91af;">SocketException</span> se)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>AppendToRichEditControl(se<span style="color: green;">.</span>Message);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> This is the call back function, which will be invoked when a client is connected</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;asyn&#8221;&gt;&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">void</span> OnClientConnect(<span style="color: #2b91af;">IAsyncResult</span> asyn)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">try</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (m_mainSocket <span style="color: green;">!=</span> <span style="color: blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Here we complete/end the BeginAccept() asynchronous call</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// by calling EndAccept() &#8211; which returns the reference to a new Socket object</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">Socket</span> workerSocket <span style="color: green;">=</span> m_mainSocket<span style="color: green;">.</span>EndAccept(asyn);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Now increment the client count for this client in a thread safe manner</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span><span style="color: #2b91af;">Interlocked</span><span style="color: green;">.</span>Increment(<span style="color: blue;">ref</span> m_clientCount);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Add the workerSocket reference to our ArrayList</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_workerSocketList<span style="color: green;">.</span>Add(workerSocket);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Send a welcome message to client with their socket id so they can communicate properly with us</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> msg <span style="color: green;">=</span> <span style="color: red;">&#8220;hello,&#8221;</span> <span style="color: green;">+</span> m_clientCount;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>SendMsgToClient(msg, m_clientCount);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Let the worker Socket do the further processing for the just connected client</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>WaitForData(workerSocket, m_clientCount);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Since the main Socket is now free, it can go back and wait for</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// other clients who are attempting to connect</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_mainSocket<span style="color: green;">.</span>BeginAccept(<span style="color: blue;">new</span> <span style="color: #2b91af;">AsyncCallback</span>(OnClientConnect), <span style="color: blue;">null</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> (<span style="color: #2b91af;">ObjectDisposedException</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>System<span style="color: green;">.</span>Diagnostics<span style="color: green;">.</span><span style="color: #2b91af;">Debugger</span><span style="color: green;">.</span>Log(<span style="color: navy;">0</span>, <span style="color: red;">&#8220;1&#8243;</span>, <span style="color: red;">&#8220;\n OnClientConnection: Socket has been closed\n&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> (<span style="color: #2b91af;">SocketException</span> se)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>AppendToRichEditControl(se<span style="color: green;">.</span>Message);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"><span> </span>Start waiting for data from the client</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;soc&#8221;&gt;&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;clientNumber&#8221;&gt;&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">void</span> WaitForData(System<span style="color: green;">.</span>Net<span style="color: green;">.</span>Sockets<span style="color: green;">.</span><span style="color: #2b91af;">Socket</span> soc, <span style="color: blue;">int</span> clientNumber)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">try</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (pfnWorkerCallBack <span style="color: green;">==</span> <span style="color: blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Specify the call back function which is to be </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// invoked when there is any write activity by the connected client</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>pfnWorkerCallBack <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">AsyncCallback</span>(OnDataReceived);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">SocketPacket</span> theSocPkt <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">SocketPacket</span>(soc, clientNumber);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>soc<span style="color: green;">.</span>BeginReceive(theSocPkt<span style="color: green;">.</span>dataBuffer, <span style="color: navy;">0</span>, theSocPkt<span style="color: green;">.</span>dataBuffer<span style="color: green;">.</span>Length, <span style="color: #2b91af;">SocketFlags</span><span style="color: green;">.</span>None, pfnWorkerCallBack, theSocPkt);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>AppendToRichEditControl(<span style="color: red;">&#8220;Connected to Client &#8220;</span> <span style="color: green;">+</span> soc<span style="color: green;">.</span>RemoteEndPoint);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> (<span style="color: #2b91af;">SocketException</span> se)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>AppendToRichEditControl(se<span style="color: green;">.</span>Message);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> This the call back function which will be invoked when the socket</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> detects any client writing of data on the stream</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;asyn&#8221;&gt;&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">void</span> OnDataReceived(<span style="color: #2b91af;">IAsyncResult</span> asyn)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">SocketPacket</span> socketData <span style="color: green;">=</span> (<span style="color: #2b91af;">SocketPacket</span>)asyn<span style="color: green;">.</span>AsyncState;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">try</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Complete the BeginReceive() asynchronous call by EndReceive() method</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// which will return the number of characters written to the stream by the client</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">int</span> iRx <span style="color: green;">=</span> socketData<span style="color: green;">.</span>m_currentSocket<span style="color: green;">.</span>EndReceive(asyn);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">char</span>[] chars <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: blue;">char</span>[iRx <span style="color: green;">+</span> <span style="color: navy;">1</span>];</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Extract the characters as a buffer</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>System<span style="color: green;">.</span>Text<span style="color: green;">.</span><span style="color: #2b91af;">Decoder</span> d <span style="color: green;">=</span> System<span style="color: green;">.</span>Text<span style="color: green;">.</span><span style="color: #2b91af;">Encoding</span><span style="color: green;">.</span>UTF8<span style="color: green;">.</span>GetDecoder();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">int</span> charLen <span style="color: green;">=</span> d<span style="color: green;">.</span>GetChars(socketData<span style="color: green;">.</span>dataBuffer, <span style="color: navy;">0</span>, iRx, chars, <span style="color: navy;">0</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>System<span style="color: green;">.</span><span style="color: #2b91af;">String</span> szData <span style="color: green;">=</span> <span style="color: blue;">new</span> System<span style="color: green;">.</span><span style="color: #2b91af;">String</span>(chars);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> msg <span style="color: green;">=</span> <span style="color: red;">&#8220;&#8221;</span> <span style="color: green;">+</span> socketData<span style="color: green;">.</span>m_clientNumber <span style="color: green;">+</span> <span style="color: red;">&#8220;:&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>Processcommand(DecodeCommandString(szData), socketData);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>AppendToRichEditControl(msg <span style="color: green;">+</span> szData);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>msg <span style="color: green;">=</span> <span style="color: red;">&#8220;command=&#8221;</span> <span style="color: green;">+</span> <span style="color: #2b91af;">Dns</span><span style="color: green;">.</span>GetHostName() <span style="color: green;">+</span> <span style="color: red;">&#8220;,ok,&#8221;</span> <span style="color: green;">+</span> szData;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>SendMsgToClient(msg, socketData); <span style="color: green;">// send our response back to the calling client</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: green;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Continue the waiting for data on the Socket</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>WaitForData(socketData<span style="color: green;">.</span>m_currentSocket, socketData<span style="color: green;">.</span>m_clientNumber);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> (<span style="color: #2b91af;">ObjectDisposedException</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>System<span style="color: green;">.</span>Diagnostics<span style="color: green;">.</span><span style="color: #2b91af;">Debugger</span><span style="color: green;">.</span>Log(<span style="color: navy;">0</span>, <span style="color: red;">&#8220;1&#8243;</span>, <span style="color: red;">&#8220;\nOnDataReceived: Socket has been closed\n&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> (<span style="color: #2b91af;">SocketException</span> se)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (se<span style="color: green;">.</span>ErrorCode <span style="color: green;">==</span> <span style="color: navy;">10054</span>) <span style="color: green;">// Error code for Connection reset by peer</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> msg <span style="color: green;">=</span> <span style="color: red;">&#8220;Client &#8220;</span> <span style="color: green;">+</span> socketData<span style="color: green;">.</span>m_clientNumber <span style="color: green;">+</span> <span style="color: red;">&#8221; Disconnected&#8221;</span> <span style="color: green;">+</span> <span style="color: red;">&#8220;\n&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>AppendToRichEditControl(msg);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Remove the reference to the worker socket of the closed client</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// so that this object will get garbage collected</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_workerSocketList[socketData<span style="color: green;">.</span>m_clientNumber <span style="color: green;">-</span> <span style="color: navy;">1</span>] <span style="color: green;">=</span> <span style="color: blue;">null</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">else</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">MessageBox</span><span style="color: green;">.</span>Show(<span style="color: red;">&#8220;SocketException Error in OnDataReceived: &#8220;</span> <span style="color: green;">+</span> se<span style="color: green;">.</span>Message <span style="color: green;">+</span> <span style="color: red;">&#8220;\r&#8221;</span> <span style="color: green;">+</span> se<span style="color: green;">.</span>StackTrace);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> (<span style="color: #2b91af;">Exception</span> ex)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">MessageBox</span><span style="color: green;">.</span>Show(<span style="color: red;">&#8220;General Error in OnDataReceived: &#8220;</span> <span style="color: green;">+</span> ex<span style="color: green;">.</span>Message <span style="color: green;">+</span> <span style="color: red;">&#8220;\r&#8221;</span> <span style="color: green;">+</span> ex<span style="color: green;">.</span>StackTrace);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> Processcommand(<span style="color: blue;">string</span>[] ClientCommand, <span style="color: #2b91af;">SocketPacket</span> socket)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// get our command string, parse it, pass through case statement</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// and perform the relevant update i.e. label status</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: green;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">int</span> count <span style="color: green;">=</span> ClientCommand<span style="color: green;">.</span>Length; <span style="color: green;">// how many elements in our array</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: green;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">for</span> (<span style="color: blue;">int</span> i <span style="color: green;">=</span> <span style="color: navy;">0</span>; i <span style="color: green;">&lt;</span> count; i<span style="color: green;">++</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">switch</span> (ClientCommand[<span style="color: navy;">0</span>]<span style="color: green;">.</span>ToLower())</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">case</span> <span style="color: red;">&#8220;hello&#8221;</span>: <span style="color: green;">// hello from client</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">int</span> SocketID <span style="color: green;">=</span> <span style="color: #2b91af;">Convert</span><span style="color: green;">.</span>ToInt16(ClientCommand[<span style="color: navy;">1</span>]); <span style="color: green;">// get our socket</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> Ident <span style="color: green;">=</span> <span style="color: red;">&#8220;&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span><span style="color: blue;">if</span> (ClientCommand[<span style="color: navy;">2</span>]<span style="color: green;">.</span>ToLower() <span style="color: green;">==</span> <span style="color: red;">&#8220;id&#8221;</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>Ident <span style="color: green;">=</span> ClientCommand[<span style="color: navy;">3</span>];</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// check if key already exists</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (<span style="color: green;">!</span>SocketMachineID<span style="color: green;">.</span>ContainsKey(Ident))</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">try</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Now add to dictionary</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>SocketMachineID<span style="color: green;">.</span>Add(Ident, SocketID);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> (<span style="color: #2b91af;">ArgumentException</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>SocketMachineID<span style="color: green;">.</span>Remove(Ident); <span style="color: green;">// remove the invalid entry</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>SocketMachineID<span style="color: green;">.</span>Add(Ident, SocketID); <span style="color: green;">// re-add it</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>AppendToRichEditControl(<span style="color: red;">&#8220;Updated key in dictionary&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span><span style="color: blue;">case</span> <span style="color: red;">&#8220;id&#8221;</span>: <span style="color: green;">// machine identifier</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (ClientCommand[<span style="color: navy;">1</span>]<span style="color: green;">.</span>ToLower() <span style="color: green;">==</span> <span style="color: red;">&#8220;client&#8221;</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">bool</span> avail <span style="color: green;">=</span> ClientCommand[<span style="color: navy;">2</span>]<span style="color: green;">.</span>ToLower() <span style="color: green;">==</span> <span style="color: red;">&#8220;available&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">case</span> <span style="color: red;">&#8220;showmessage&#8221;</span>:</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">MessageBox</span><span style="color: green;">.</span>Show(ClientCommand[<span style="color: navy;">1</span>]);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span><span style="color: blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">default</span>:</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">break</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Here we decode the string sent from the client</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;szData&#8221;&gt;&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">string</span>[] DecodeCommandString(<span style="color: blue;">string</span> szData)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span>[] command <span style="color: green;">=</span> <span style="color: #2b91af;">UtilityFunctions</span><span style="color: green;">.</span>SplitQuoted(szData, <span style="color: red;">&#8220;=,\r\n\0&#8243;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">return</span> command;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> This method could be called by either the main thread or any of the worker threads</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;msg&#8221;&gt;</span><span style="color: green;">String to append</span><span style="color: gray;">&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> AppendToRichEditControl(<span style="color: blue;">string</span> msg)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Check to see if this method is called from a thread other than the one created the control</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (InvokeRequired)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// We cannot update the GUI on this thread.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// All GUI controls are to be updated by the main (GUI) thread.</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Hence we will use the invoke method on the control which will</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// be called when the Main thread is free</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Do UI update on UI thread</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">object</span>[] pList <span style="color: green;">=</span> { msg };</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span>richTextBoxReceivedMsg<span style="color: green;">.</span>BeginInvoke(<span style="color: blue;">new</span> <span style="color: #2b91af;">UpdateRichEditCallback</span>(OnUpdateRichEdit), pList);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>WriteToLogFile(msg);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">else</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// This is the main thread which created this control, hence update it directly </span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>OnUpdateRichEdit(msg);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>WriteToLogFile(msg);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> This UpdateRichEdit will be run back on the UI thread</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> (using System.EventHandler signature so we don&#8217;t need to define a new delegate type here)</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;msg&#8221;&gt;&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> OnUpdateRichEdit(<span style="color: blue;">string</span> msg)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>richTextBoxReceivedMsg<span style="color: green;">.</span>AppendText(msg <span style="color: green;">+</span> <span style="color: red;">&#8220;\r&#8221;</span>);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">void</span> CloseSockets()</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (m_mainSocket <span style="color: green;">!=</span> <span style="color: blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_mainSocket<span style="color: green;">.</span>Close();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_mainSocket <span style="color: green;">=</span> <span style="color: blue;">null</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span> </span><span style="color: blue;">try</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">Socket</span> workerSocket <span style="color: green;">=</span> <span style="color: blue;">null</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">for</span> (<span style="color: blue;">int</span> i <span style="color: green;">=</span> <span style="color: navy;">0</span>; i <span style="color: green;">&lt;</span> m_workerSocketList<span style="color: green;">.</span>Count; i<span style="color: green;">++</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>workerSocket <span style="color: green;">=</span> (<span style="color: #2b91af;">Socket</span>)m_workerSocketList[i];</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (workerSocket <span style="color: green;">!=</span> <span style="color: blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_workerSocketList<span style="color: green;">.</span>Remove(workerSocket);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>workerSocket<span style="color: green;">.</span>Close();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>workerSocket <span style="color: green;">=</span> <span style="color: blue;">null</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{ }</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Allows us to send a specific message to a specific client</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;msg&#8221;&gt;&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;clientNumber&#8221;&gt;&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">void</span> SendMsgToClient(<span style="color: blue;">string</span> msg, <span style="color: blue;">int</span> clientNumber)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Convert the reply to byte array</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">byte</span>[] byData <span style="color: green;">=</span> System<span style="color: green;">.</span>Text<span style="color: green;">.</span><span style="color: #2b91af;">Encoding</span><span style="color: green;">.</span>ASCII<span style="color: green;">.</span>GetBytes(msg);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (clientNumber <span style="color: green;">==</span> <span style="color: green;">-</span><span style="color: navy;">1</span>) <span style="color: green;">// send to all available servers</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">for</span> (<span style="color: blue;">int</span> i <span style="color: green;">=</span> <span style="color: navy;">0</span>; i <span style="color: green;">&lt;</span> m_workerSocketList<span style="color: green;">.</span>Count; i<span style="color: green;">++</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">Socket</span> workerSocket <span style="color: green;">=</span> (<span style="color: #2b91af;">Socket</span>)m_workerSocketList[i];</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (workerSocket <span style="color: green;">!=</span> <span style="color: blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>workerSocket<span style="color: green;">.</span>Send(byData);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">else</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (clientNumber <span style="color: green;">!=</span> <span style="color: navy;">0</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">Socket</span> workerSocket <span style="color: green;">=</span> (<span style="color: #2b91af;">Socket</span>)m_workerSocketList[clientNumber <span style="color: green;">-</span> <span style="color: navy;">1</span>];</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (workerSocket <span style="color: green;">!=</span> <span style="color: blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>workerSocket<span style="color: green;">.</span>Send(byData);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Send back a reply to the client using a socket descriptor</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;socketData&#8221;&gt;</span><span style="color: green;">Socket to send the data down</span><span style="color: gray;">&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;szData&#8221;&gt;</span><span style="color: green;">Data to send</span><span style="color: gray;">&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">static</span> <span style="color: blue;">void</span> SendMsgToClient(<span style="color: blue;">string</span> szData, <span style="color: #2b91af;">SocketPacket</span> socketData)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">try</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">string</span> replyMsg <span style="color: green;">=</span> <span style="color: red;">&#8220;Server Reply,&#8221;</span> <span style="color: green;">+</span> szData<span style="color: green;">.</span>ToUpper();</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Convert the reply to byte array</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">byte</span>[] byData <span style="color: green;">=</span> System<span style="color: green;">.</span>Text<span style="color: green;">.</span><span style="color: #2b91af;">Encoding</span><span style="color: green;">.</span>ASCII<span style="color: green;">.</span>GetBytes(replyMsg);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">Socket</span> workerSocket <span style="color: green;">=</span> (<span style="color: #2b91af;">Socket</span>)socketData<span style="color: green;">.</span>m_currentSocket;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>workerSocket<span style="color: green;">.</span>Send(byData);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> <span style="color: green;">//(Exception ex)</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// MessageBox.Show(&#8220;Error in SendMsgToClient method: &#8221; + ex.Message + &#8220;\r&#8221; + ex.StackTrace);</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> Allows us to send a broadcast message to all our clients</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: gray;">///</span><span style="color: green;"> </span><span style="color: gray;">&lt;param name=&#8221;msg&#8221;&gt;</span><span style="color: green;">Message to send</span><span style="color: gray;">&lt;/param&gt;</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">private</span> <span style="color: blue;">void</span> SendMsgToAllClients(<span style="color: blue;">string</span> msg)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">try</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>msg <span style="color: green;">=</span> <span style="color: red;">&#8220;servermsg:&#8221;</span> <span style="color: green;">+</span> msg <span style="color: green;">+</span> <span style="color: red;">&#8220;\n&#8221;</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">byte</span>[] byData <span style="color: green;">=</span> System<span style="color: green;">.</span>Text<span style="color: green;">.</span><span style="color: #2b91af;">Encoding</span><span style="color: green;">.</span>ASCII<span style="color: green;">.</span>GetBytes(msg);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: #2b91af;">Socket</span> workerSocket <span style="color: green;">=</span> <span style="color: blue;">null</span>;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">for</span> (<span style="color: blue;">int</span> i <span style="color: green;">=</span> <span style="color: navy;">0</span>; i <span style="color: green;">&lt;</span> m_workerSocketList<span style="color: green;">.</span>Count; i<span style="color: green;">++</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>workerSocket <span style="color: green;">=</span> (<span style="color: #2b91af;">Socket</span>)m_workerSocketList[i];</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (workerSocket <span style="color: green;">!=</span> <span style="color: blue;">null</span>)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">if</span> (workerSocket<span style="color: green;">.</span>Connected)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>workerSocket<span style="color: green;">.</span>Send(byData);</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">catch</span> <span style="color: green;">//(SocketException se)</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">//MessageBox.Show(se.Message);</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#endregion</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> Socket Methods</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#region</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> SocketPacket Class</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">SocketPacket</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Constructor which takes a Socket and a client number</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> SocketPacket(System<span style="color: green;">.</span>Net<span style="color: green;">.</span>Sockets<span style="color: green;">.</span><span style="color: #2b91af;">Socket</span> socket, <span style="color: blue;">int</span> clientNumber)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>{</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_currentSocket <span style="color: green;">=</span> socket;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>m_clientNumber <span style="color: green;">=</span> clientNumber;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> System<span style="color: green;">.</span>Net<span style="color: green;">.</span>Sockets<span style="color: green;">.</span><span style="color: #2b91af;">Socket</span> m_currentSocket;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">int</span> m_clientNumber;</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: green;">// Buffer to store the data sent by the client</span></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span><span style="color: blue;">public</span> <span style="color: blue;">byte</span>[] dataBuffer <span style="color: green;">=</span> <span style="color: blue;">new</span> <span style="color: blue;">byte</span>[<span style="color: navy;">1024</span>];</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"><span> </span>}</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;; color: blue;"><span> </span>#endregion</span><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;"> SocketPacket Class</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: &quot;Courier New&quot;;">}</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">Now simply compile and run. You will now have a server application which is capable of receiving any clients that connect to it on port 10001. Try it with a telnet client i.e. telnet 127.0.0.1 10001</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">You should see the client connect in the server window and the telnet client should get a response back saying hello with the socket number it&#8217;s connected on. Whilst this session is open, try another telnet session and you should see the socket number increase.</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">In the server app, add some text to the text box and click Send Message. The telnet clients will display the server sent message</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">That&#8217;s all there is to it. In the next part I will knock up a client application that you can use to talk more effectively to the server and have it send commands that it acts upon. For a hint, check out the ProcessCommand method in the server</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">Good luck!</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">Si</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xploiter.com/c-and-aspnet/socket-programming-in-c-using-the-built-in-libraries-a-fully-working-production-example-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
