<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>socket 相关</title><link>http://blog.vckbase.com/zaboli/category/366.html</link><description>socket 相关</description><managingEditor>玻璃小屋</managingEditor><dc:language>zh-CHS</dc:language><generator>.Text Version 0.958.2004.214</generator><item><dc:creator>玻璃小屋</dc:creator><title>C# Socket 异步 SERVER </title><link>http://blog.vckbase.com/zaboli/archive/2010/02/28/41078.html</link><pubDate>Sun, 28 Feb 2010 14:37:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2010/02/28/41078.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/41078.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2010/02/28/41078.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/41078.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/41078.html</trackback:ping><description>&lt;DIV style="BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 5.4pt; WIDTH: 98%; PADDING-RIGHT: 5.4pt; BACKGROUND: #e6e6e6; BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid; PADDING-TOP: 4px"&gt;
&lt;DIV&gt;&lt;IMG align=top src="/Images/OutliningIndicators/None.gif"&gt;&lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;System;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/None.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;System.Net;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/None.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;System.Net.Sockets;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/None.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;System.Text;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/None.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;System.Threading;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/None.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/None.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;State&amp;nbsp;object&amp;nbsp;for&amp;nbsp;reading&amp;nbsp;client&amp;nbsp;data&amp;nbsp;asynchronously&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/None.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;StateObject&lt;BR&gt;&lt;IMG id=Codehighlighter1_182_467_Open_Image onclick="this.style.display='none'; Codehighlighter1_182_467_Open_Text.style.display='none'; Codehighlighter1_182_467_Closed_Image.style.display='inline'; Codehighlighter1_182_467_Closed_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ExpandedBlockStart.gif"&gt;&lt;IMG style="DISPLAY: none" id=Codehighlighter1_182_467_Closed_Image onclick="this.style.display='none'; Codehighlighter1_182_467_Closed_Text.style.display='none'; Codehighlighter1_182_467_Open_Image.style.display='inline'; Codehighlighter1_182_467_Open_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ContractedBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_182_467_Closed_Text&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_182_467_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Client&amp;nbsp;&amp;nbsp;socket.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Socket&amp;nbsp;workSocket&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;null&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Size&amp;nbsp;of&amp;nbsp;receive&amp;nbsp;buffer.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;const&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;BufferSize&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1024&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Receive&amp;nbsp;buffer.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;byte&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;[]&amp;nbsp;buffer&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;byte&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;[BufferSize];&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Received&amp;nbsp;data&amp;nbsp;string.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;StringBuilder&amp;nbsp;sb&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;StringBuilder();&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/ExpandedBlockEnd.gif"&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/None.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/None.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;AsynchronousSocketListener&lt;BR&gt;&lt;IMG id=Codehighlighter1_510_5627_Open_Image onclick="this.style.display='none'; Codehighlighter1_510_5627_Open_Text.style.display='none'; Codehighlighter1_510_5627_Closed_Image.style.display='inline'; Codehighlighter1_510_5627_Closed_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ExpandedBlockStart.gif"&gt;&lt;IMG style="DISPLAY: none" id=Codehighlighter1_510_5627_Closed_Image onclick="this.style.display='none'; Codehighlighter1_510_5627_Closed_Text.style.display='none'; Codehighlighter1_510_5627_Open_Image.style.display='inline'; Codehighlighter1_510_5627_Open_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ContractedBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_510_5627_Closed_Text&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_510_5627_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Thread&amp;nbsp;signal.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;static&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;ManualResetEvent&amp;nbsp;allDone&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;ManualResetEvent(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;false&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;AsynchronousSocketListener()&lt;BR&gt;&lt;IMG id=Codehighlighter1_653_659_Open_Image onclick="this.style.display='none'; Codehighlighter1_653_659_Open_Text.style.display='none'; Codehighlighter1_653_659_Closed_Image.style.display='inline'; Codehighlighter1_653_659_Closed_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;IMG style="DISPLAY: none" id=Codehighlighter1_653_659_Closed_Image onclick="this.style.display='none'; Codehighlighter1_653_659_Closed_Text.style.display='none'; Codehighlighter1_653_659_Open_Image.style.display='inline'; Codehighlighter1_653_659_Open_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_653_659_Closed_Text&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_653_659_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;static&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;StartListening()&lt;BR&gt;&lt;IMG id=Codehighlighter1_706_2255_Open_Image onclick="this.style.display='none'; Codehighlighter1_706_2255_Open_Text.style.display='none'; Codehighlighter1_706_2255_Closed_Image.style.display='inline'; Codehighlighter1_706_2255_Closed_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;IMG style="DISPLAY: none" id=Codehighlighter1_706_2255_Closed_Image onclick="this.style.display='none'; Codehighlighter1_706_2255_Closed_Text.style.display='none'; Codehighlighter1_706_2255_Open_Image.style.display='inline'; Codehighlighter1_706_2255_Open_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_706_2255_Closed_Text&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_706_2255_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Data&amp;nbsp;buffer&amp;nbsp;for&amp;nbsp;incoming&amp;nbsp;data.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;byte&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;[]&amp;nbsp;bytes&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Byte[&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1024&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;];&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Establish&amp;nbsp;the&amp;nbsp;local&amp;nbsp;endpoint&amp;nbsp;for&amp;nbsp;the&amp;nbsp;socket.&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;The&amp;nbsp;DNS&amp;nbsp;name&amp;nbsp;of&amp;nbsp;the&amp;nbsp;computer&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;running&amp;nbsp;the&amp;nbsp;listener&amp;nbsp;is&amp;nbsp;"host.contoso.com".&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IPHostEntry&amp;nbsp;ipHostInfo&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Dns.Resolve(Dns.GetHostName());&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IPAddress&amp;nbsp;ipAddress&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;ipHostInfo.AddressList[&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;];&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.Write(ipAddress);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IPEndPoint&amp;nbsp;localEndPoint&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;IPEndPoint(ipAddress,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;11000&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;TCP/IP&amp;nbsp;socket.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Socket&amp;nbsp;listener&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Socket(AddressFamily.InterNetwork,&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SocketType.Stream,&amp;nbsp;ProtocolType.Tcp);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Bind&amp;nbsp;the&amp;nbsp;socket&amp;nbsp;to&amp;nbsp;the&amp;nbsp;local&amp;nbsp;endpoint&amp;nbsp;and&amp;nbsp;listen&amp;nbsp;for&amp;nbsp;incoming&amp;nbsp;connections.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;try&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_1424_2071_Open_Image onclick="this.style.display='none'; Codehighlighter1_1424_2071_Open_Text.style.display='none'; Codehighlighter1_1424_2071_Closed_Image.style.display='inline'; Codehighlighter1_1424_2071_Closed_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;IMG style="DISPLAY: none" id=Codehighlighter1_1424_2071_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1424_2071_Closed_Text.style.display='none'; Codehighlighter1_1424_2071_Open_Image.style.display='inline'; Codehighlighter1_1424_2071_Open_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1424_2071_Closed_Text&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_1424_2071_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener.Bind(localEndPoint);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener.Listen(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;100&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;while&amp;nbsp;(true)&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;i&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&amp;nbsp;i&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;10&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&amp;nbsp;i&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;++&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;IMG id=Codehighlighter1_1582_2060_Open_Image onclick="this.style.display='none'; Codehighlighter1_1582_2060_Open_Text.style.display='none'; Codehighlighter1_1582_2060_Closed_Image.style.display='inline'; Codehighlighter1_1582_2060_Closed_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;IMG style="DISPLAY: none" id=Codehighlighter1_1582_2060_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1582_2060_Closed_Text.style.display='none'; Codehighlighter1_1582_2060_Open_Image.style.display='inline'; Codehighlighter1_1582_2060_Open_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1582_2060_Closed_Text&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_1582_2060_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Set&amp;nbsp;the&amp;nbsp;event&amp;nbsp;to&amp;nbsp;nonsignaled&amp;nbsp;state.&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;allDone.Reset();&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Start&amp;nbsp;an&amp;nbsp;asynchronous&amp;nbsp;socket&amp;nbsp;to&amp;nbsp;listen&amp;nbsp;for&amp;nbsp;connections.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Waiting&amp;nbsp;for&amp;nbsp;a&amp;nbsp;connection&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener.BeginAccept(&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;AsyncCallback(AcceptCallback),&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Wait&amp;nbsp;until&amp;nbsp;a&amp;nbsp;connection&amp;nbsp;is&amp;nbsp;made&amp;nbsp;before&amp;nbsp;continuing.&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;allDone.WaitOne();&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;catch&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(Exception&amp;nbsp;e)&lt;BR&gt;&lt;IMG id=Codehighlighter1_2109_2164_Open_Image onclick="this.style.display='none'; Codehighlighter1_2109_2164_Open_Text.style.display='none'; Codehighlighter1_2109_2164_Closed_Image.style.display='inline'; Codehighlighter1_2109_2164_Closed_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;IMG style="DISPLAY: none" id=Codehighlighter1_2109_2164_Closed_Image onclick="this.style.display='none'; Codehighlighter1_2109_2164_Closed_Text.style.display='none'; Codehighlighter1_2109_2164_Open_Image.style.display='inline'; Codehighlighter1_2109_2164_Open_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_2109_2164_Closed_Text&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_2109_2164_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(e.ToString());&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; Press&amp;nbsp;ENTER&amp;nbsp;to&amp;nbsp;continue&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.Read();&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;static&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;AcceptCallback(IAsyncResult&amp;nbsp;ar)&lt;BR&gt;&lt;IMG id=Codehighlighter1_2317_3013_Open_Image onclick="this.style.display='none'; Codehighlighter1_2317_3013_Open_Text.style.display='none'; Codehighlighter1_2317_3013_Closed_Image.style.display='inline'; Codehighlighter1_2317_3013_Closed_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;IMG style="DISPLAY: none" id=Codehighlighter1_2317_3013_Closed_Image onclick="this.style.display='none'; Codehighlighter1_2317_3013_Closed_Text.style.display='none'; Codehighlighter1_2317_3013_Open_Image.style.display='inline'; Codehighlighter1_2317_3013_Open_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_2317_3013_Closed_Text&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_2317_3013_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Signal&amp;nbsp;the&amp;nbsp;main&amp;nbsp;thread&amp;nbsp;to&amp;nbsp;continue.&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;allDone.Set();&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Client&amp;nbsp;coming!!!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Get&amp;nbsp;the&amp;nbsp;socket&amp;nbsp;that&amp;nbsp;handles&amp;nbsp;the&amp;nbsp;client&amp;nbsp;request.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Socket&amp;nbsp;listener&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(Socket)ar.AsyncState;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Socket&amp;nbsp;handler&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;listener.EndAccept(ar);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener.BeginAccept(&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;AsyncCallback(AcceptCallback),&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Waiting&amp;nbsp;for&amp;nbsp;a&amp;nbsp;connection&amp;nbsp;again&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Create&amp;nbsp;the&amp;nbsp;state&amp;nbsp;object.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;StateObject&amp;nbsp;state&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;StateObject();&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state.workSocket&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;handler;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler.BeginReceive(state.buffer,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&amp;nbsp;StateObject.BufferSize,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;AsyncCallback(ReadCallback),&amp;nbsp;state);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;static&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;ReadCallback(IAsyncResult&amp;nbsp;ar)&lt;BR&gt;&lt;IMG id=Codehighlighter1_3073_4588_Open_Image onclick="this.style.display='none'; Codehighlighter1_3073_4588_Open_Text.style.display='none'; Codehighlighter1_3073_4588_Closed_Image.style.display='inline'; Codehighlighter1_3073_4588_Closed_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;IMG style="DISPLAY: none" id=Codehighlighter1_3073_4588_Closed_Image onclick="this.style.display='none'; Codehighlighter1_3073_4588_Closed_Text.style.display='none'; Codehighlighter1_3073_4588_Open_Image.style.display='inline'; Codehighlighter1_3073_4588_Open_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_3073_4588_Closed_Text&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_3073_4588_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;content&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;String.Empty;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Retrieve&amp;nbsp;the&amp;nbsp;state&amp;nbsp;object&amp;nbsp;and&amp;nbsp;the&amp;nbsp;handler&amp;nbsp;socket&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;from&amp;nbsp;the&amp;nbsp;asynchronous&amp;nbsp;state&amp;nbsp;object.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;StateObject&amp;nbsp;state&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(StateObject)ar.AsyncState;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Socket&amp;nbsp;handler&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;state.workSocket;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Read&amp;nbsp;data&amp;nbsp;from&amp;nbsp;the&amp;nbsp;client&amp;nbsp;socket.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;bytesRead&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;handler.EndReceive(ar);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(bytesRead&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;IMG id=Codehighlighter1_3452_4501_Open_Image onclick="this.style.display='none'; Codehighlighter1_3452_4501_Open_Text.style.display='none'; Codehighlighter1_3452_4501_Closed_Image.style.display='inline'; Codehighlighter1_3452_4501_Closed_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;IMG style="DISPLAY: none" id=Codehighlighter1_3452_4501_Closed_Image onclick="this.style.display='none'; Codehighlighter1_3452_4501_Closed_Text.style.display='none'; Codehighlighter1_3452_4501_Open_Image.style.display='inline'; Codehighlighter1_3452_4501_Open_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_3452_4501_Closed_Text&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_3452_4501_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;There&amp;nbsp;&amp;nbsp;might&amp;nbsp;be&amp;nbsp;more&amp;nbsp;data,&amp;nbsp;so&amp;nbsp;store&amp;nbsp;the&amp;nbsp;data&amp;nbsp;received&amp;nbsp;so&amp;nbsp;far.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state.sb.Append(Encoding.ASCII.GetString(&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state.buffer,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&amp;nbsp;bytesRead));&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(Encoding.ASCII.GetString(state.buffer,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&amp;nbsp;bytesRead));&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Check&amp;nbsp;for&amp;nbsp;end-of-file&amp;nbsp;tag.&amp;nbsp;If&amp;nbsp;it&amp;nbsp;is&amp;nbsp;not&amp;nbsp;there,&amp;nbsp;read&amp;nbsp;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;more&amp;nbsp;data.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;content&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;state.sb.ToString();&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(content.IndexOf(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;EOF&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;-&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;IMG id=Codehighlighter1_3914_4256_Open_Image onclick="this.style.display='none'; Codehighlighter1_3914_4256_Open_Text.style.display='none'; Codehighlighter1_3914_4256_Closed_Image.style.display='inline'; Codehighlighter1_3914_4256_Closed_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;IMG style="DISPLAY: none" id=Codehighlighter1_3914_4256_Closed_Image onclick="this.style.display='none'; Codehighlighter1_3914_4256_Closed_Text.style.display='none'; Codehighlighter1_3914_4256_Open_Image.style.display='inline'; Codehighlighter1_3914_4256_Open_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_3914_4256_Closed_Text&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_3914_4256_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;All&amp;nbsp;the&amp;nbsp;data&amp;nbsp;has&amp;nbsp;been&amp;nbsp;read&amp;nbsp;from&amp;nbsp;the&amp;nbsp;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;client.&amp;nbsp;Display&amp;nbsp;it&amp;nbsp;on&amp;nbsp;the&amp;nbsp;console.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Read&amp;nbsp;{0}&amp;nbsp;bytes&amp;nbsp;from&amp;nbsp;socket.&amp;nbsp; &amp;nbsp;Data&amp;nbsp;:&amp;nbsp;{1}&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;content.Length,&amp;nbsp;content);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Echo&amp;nbsp;the&amp;nbsp;data&amp;nbsp;back&amp;nbsp;to&amp;nbsp;the&amp;nbsp;client.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Send(handler,&amp;nbsp;content);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;else&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_4287_4491_Open_Image onclick="this.style.display='none'; Codehighlighter1_4287_4491_Open_Text.style.display='none'; Codehighlighter1_4287_4491_Closed_Image.style.display='inline'; Codehighlighter1_4287_4491_Closed_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;IMG style="DISPLAY: none" id=Codehighlighter1_4287_4491_Closed_Image onclick="this.style.display='none'; Codehighlighter1_4287_4491_Closed_Text.style.display='none'; Codehighlighter1_4287_4491_Open_Image.style.display='inline'; Codehighlighter1_4287_4491_Open_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_4287_4491_Closed_Text&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_4287_4491_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Not&amp;nbsp;all&amp;nbsp;data&amp;nbsp;received.&amp;nbsp;Get&amp;nbsp;more.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler.BeginReceive(state.buffer,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&amp;nbsp;StateObject.BufferSize,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;AsyncCallback(ReadCallback),&amp;nbsp;state);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;else&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_4524_4582_Open_Image onclick="this.style.display='none'; Codehighlighter1_4524_4582_Open_Text.style.display='none'; Codehighlighter1_4524_4582_Closed_Image.style.display='inline'; Codehighlighter1_4524_4582_Closed_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;IMG style="DISPLAY: none" id=Codehighlighter1_4524_4582_Closed_Image onclick="this.style.display='none'; Codehighlighter1_4524_4582_Closed_Text.style.display='none'; Codehighlighter1_4524_4582_Open_Image.style.display='inline'; Codehighlighter1_4524_4582_Open_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_4524_4582_Closed_Text&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_4524_4582_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Client&amp;nbsp;Leave!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;private&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;static&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Send(Socket&amp;nbsp;handler,&amp;nbsp;String&amp;nbsp;data)&lt;BR&gt;&lt;IMG id=Codehighlighter1_4653_4957_Open_Image onclick="this.style.display='none'; Codehighlighter1_4653_4957_Open_Text.style.display='none'; Codehighlighter1_4653_4957_Closed_Image.style.display='inline'; Codehighlighter1_4653_4957_Closed_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;IMG style="DISPLAY: none" id=Codehighlighter1_4653_4957_Closed_Image onclick="this.style.display='none'; Codehighlighter1_4653_4957_Closed_Text.style.display='none'; Codehighlighter1_4653_4957_Open_Image.style.display='inline'; Codehighlighter1_4653_4957_Open_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_4653_4957_Closed_Text&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_4653_4957_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Convert&amp;nbsp;the&amp;nbsp;string&amp;nbsp;data&amp;nbsp;to&amp;nbsp;byte&amp;nbsp;data&amp;nbsp;using&amp;nbsp;ASCII&amp;nbsp;encoding.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;byte&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;[]&amp;nbsp;byteData&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Encoding.ASCII.GetBytes(data);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Begin&amp;nbsp;sending&amp;nbsp;the&amp;nbsp;data&amp;nbsp;to&amp;nbsp;the&amp;nbsp;remote&amp;nbsp;device.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler.BeginSend(byteData,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&amp;nbsp;byteData.Length,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;AsyncCallback(SendCallback),&amp;nbsp;handler);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;private&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;static&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;SendCallback(IAsyncResult&amp;nbsp;ar)&lt;BR&gt;&lt;IMG id=Codehighlighter1_5018_5525_Open_Image onclick="this.style.display='none'; Codehighlighter1_5018_5525_Open_Text.style.display='none'; Codehighlighter1_5018_5525_Closed_Image.style.display='inline'; Codehighlighter1_5018_5525_Closed_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;IMG style="DISPLAY: none" id=Codehighlighter1_5018_5525_Closed_Image onclick="this.style.display='none'; Codehighlighter1_5018_5525_Closed_Text.style.display='none'; Codehighlighter1_5018_5525_Open_Image.style.display='inline'; Codehighlighter1_5018_5525_Open_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_5018_5525_Closed_Text&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_5018_5525_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;try&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_5040_5426_Open_Image onclick="this.style.display='none'; Codehighlighter1_5040_5426_Open_Text.style.display='none'; Codehighlighter1_5040_5426_Closed_Image.style.display='inline'; Codehighlighter1_5040_5426_Closed_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;IMG style="DISPLAY: none" id=Codehighlighter1_5040_5426_Closed_Image onclick="this.style.display='none'; Codehighlighter1_5040_5426_Closed_Text.style.display='none'; Codehighlighter1_5040_5426_Open_Image.style.display='inline'; Codehighlighter1_5040_5426_Open_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_5040_5426_Closed_Text&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_5040_5426_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Retrieve&amp;nbsp;the&amp;nbsp;socket&amp;nbsp;from&amp;nbsp;the&amp;nbsp;state&amp;nbsp;object.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Socket&amp;nbsp;handler&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(Socket)ar.AsyncState;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Complete&amp;nbsp;sending&amp;nbsp;the&amp;nbsp;data&amp;nbsp;to&amp;nbsp;the&amp;nbsp;remote&amp;nbsp;device.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;bytesSent&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;handler.EndSend(ar);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Sent&amp;nbsp;{0}&amp;nbsp;bytes&amp;nbsp;to&amp;nbsp;client.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&amp;nbsp;bytesSent);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler.Shutdown(SocketShutdown.Both);&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler.Close();&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;catch&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(Exception&amp;nbsp;e)&lt;BR&gt;&lt;IMG id=Codehighlighter1_5464_5519_Open_Image onclick="this.style.display='none'; Codehighlighter1_5464_5519_Open_Text.style.display='none'; Codehighlighter1_5464_5519_Closed_Image.style.display='inline'; Codehighlighter1_5464_5519_Closed_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;IMG style="DISPLAY: none" id=Codehighlighter1_5464_5519_Closed_Image onclick="this.style.display='none'; Codehighlighter1_5464_5519_Closed_Text.style.display='none'; Codehighlighter1_5464_5519_Open_Image.style.display='inline'; Codehighlighter1_5464_5519_Open_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_5464_5519_Closed_Text&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_5464_5519_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(e.ToString());&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;static&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Main(String[]&amp;nbsp;args)&lt;BR&gt;&lt;IMG id=Codehighlighter1_5575_5625_Open_Image onclick="this.style.display='none'; Codehighlighter1_5575_5625_Open_Text.style.display='none'; Codehighlighter1_5575_5625_Closed_Image.style.display='inline'; Codehighlighter1_5575_5625_Closed_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;IMG style="DISPLAY: none" id=Codehighlighter1_5575_5625_Closed_Image onclick="this.style.display='none'; Codehighlighter1_5575_5625_Closed_Text.style.display='none'; Codehighlighter1_5575_5625_Open_Image.style.display='inline'; Codehighlighter1_5575_5625_Open_Text.style.display='inline';" align=top src="/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_5575_5625_Closed_Text&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_5575_5625_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;StartListening();&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/InBlock.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/ExpandedBlockEnd.gif"&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG align=top src="/Images/OutliningIndicators/None.gif"&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/41078.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>玻璃小屋</dc:creator><title>句柄仅仅是索引。。不要轻易去搞副本。。</title><link>http://blog.vckbase.com/zaboli/archive/2009/07/15/37911.html</link><pubDate>Wed, 15 Jul 2009 08:37:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2009/07/15/37911.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/37911.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2009/07/15/37911.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/37911.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/37911.html</trackback:ping><description>打个比方：&lt;BR&gt;你到旅馆住，人家给你一 503号房间的钥匙。 你小子私自去配了几把相同的钥匙，分给你的小蜜、二奶们。有一天你突然不想在这里住了，把退房、结帐、还钥匙。走人了。。但是忘记告诉小蜜、二奶们不要来了。。。。这时就危险了。别人恰好开了503号房。。。你小蜜和二奶去了。。。。这这不是就成免费给别人用了？&lt;BR&gt;&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BOOL&amp;nbsp;bRet&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;BR&gt;&lt;IMG id=Codehighlighter1_46_48_Open_Image onclick="this.style.display='none'; Codehighlighter1_46_48_Open_Text.style.display='none'; Codehighlighter1_46_48_Closed_Image.style.display='inline'; Codehighlighter1_46_48_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_46_48_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_46_48_Closed_Text.style.display='none'; Codehighlighter1_46_48_Open_Image.style.display='inline'; Codehighlighter1_46_48_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;char&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;szBuf[&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1024&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_46_48_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_46_48_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SOCKET&amp;nbsp;s&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;socket(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,SOCK_STREAM,IPPROTO_TCP);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SOCKET&amp;nbsp;s1&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;s;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SOCKET&amp;nbsp;s2&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;s;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SOCKET&amp;nbsp;s3&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;s;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;closesocket(s);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;s&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;NULL;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SOCKET&amp;nbsp;s4&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;socket(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,SOCK_STREAM,IPPROTO_TCP);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SOCKADDR_IN&amp;nbsp;sockAddr;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;sockAddr,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;sizeof&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(sockAddr));&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sockAddr.sin_family&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;AF_INET;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sockAddr.sin_addr.s_addr&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;inet_addr(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;61.153.202.157&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sockAddr.sin_port&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;htons((u_short)&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;80&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(connect(s1,(SOCKADDR&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;sockAddr,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;sizeof&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(sockAddr))&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;SOCKET_ERROR)&lt;BR&gt;&lt;IMG id=Codehighlighter1_539_688_Open_Image onclick="this.style.display='none'; Codehighlighter1_539_688_Open_Text.style.display='none'; Codehighlighter1_539_688_Closed_Image.style.display='inline'; Codehighlighter1_539_688_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_539_688_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_539_688_Closed_Text.style.display='none'; Codehighlighter1_539_688_Open_Image.style.display='inline'; Codehighlighter1_539_688_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_539_688_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_539_688_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sprintf(szBuf,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Get&amp;nbsp;xxx &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;send(s1,szBuf,strlen(szBuf),&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;recv(s1,szBuf,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;sizeof&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(szBuf),&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bRet&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;TRUE;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/37911.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>玻璃小屋</dc:creator><title>完成端口(IOCP) 也可以这样用~~呵呵~ 用来充当线程之间的数据队列~</title><link>http://blog.vckbase.com/zaboli/archive/2008/04/30/33472.html</link><pubDate>Wed, 30 Apr 2008 02:42:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2008/04/30/33472.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/33472.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2008/04/30/33472.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/33472.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/33472.html</trackback:ping><description>&lt;P&gt;完成端口貌似就是用 PostQueuedCompletionStatus/&lt;STRONG&gt;GetQueuedCompletionStatus 来管理一个事件队列的~ 即使没有 文件和Socket IO，我们单单用他来管理 线程之间的数据传递，貌似也很好用啊。。。。 ;p&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Test32.cpp&amp;nbsp;:&amp;nbsp;定义控制台应用程序的入口点。&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;#include&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;stdafx.h&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;#include&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;stdlib.h&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;#include&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;windows.h&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;#include&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;process.h&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;#include&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;iostream&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;HANDLE&amp;nbsp;m_hCompletionPort;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;volatile&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;BOOL&amp;nbsp;m_bShutDown;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;struct&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;TESTOVERLAPPED&lt;BR&gt;&lt;IMG id=Codehighlighter1_216_256_Open_Image onclick="this.style.display='none'; Codehighlighter1_216_256_Open_Text.style.display='none'; Codehighlighter1_216_256_Closed_Image.style.display='inline'; Codehighlighter1_216_256_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_216_256_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_216_256_Closed_Text.style.display='none'; Codehighlighter1_216_256_Open_Image.style.display='inline'; Codehighlighter1_216_256_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_216_256_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_216_256_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OVERLAPPED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_ol;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CHAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;szData[&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;512&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;];&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;UINT&amp;nbsp;WINAPI&amp;nbsp;IOWorkerThreadProc(LPVOID&amp;nbsp;pParam)&lt;BR&gt;&lt;IMG id=Codehighlighter1_307_1472_Open_Image onclick="this.style.display='none'; Codehighlighter1_307_1472_Open_Text.style.display='none'; Codehighlighter1_307_1472_Closed_Image.style.display='inline'; Codehighlighter1_307_1472_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_307_1472_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_307_1472_Closed_Text.style.display='none'; Codehighlighter1_307_1472_Open_Image.style.display='inline'; Codehighlighter1_307_1472_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_307_1472_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_307_1472_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BOOL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bError&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwIoSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwCmpKey&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LPOVERLAPPED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lpOverlapped&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;NULL;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TESTOVERLAPPED&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pOverlapBuff&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;NULL;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;while&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;bError&amp;nbsp;)&lt;BR&gt;&lt;IMG id=Codehighlighter1_478_1426_Open_Image onclick="this.style.display='none'; Codehighlighter1_478_1426_Open_Text.style.display='none'; Codehighlighter1_478_1426_Closed_Image.style.display='inline'; Codehighlighter1_478_1426_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_478_1426_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_478_1426_Closed_Text.style.display='none'; Codehighlighter1_478_1426_Open_Image.style.display='inline'; Codehighlighter1_478_1426_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_478_1426_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_478_1426_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pOverlapBuff&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;NULL;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwCmpKey&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Get&amp;nbsp;a&amp;nbsp;completed&amp;nbsp;IO&amp;nbsp;request.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BOOL&amp;nbsp;bIORet&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;GetQueuedCompletionStatus(m_hCompletionPort,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;dwIoSize,&amp;nbsp;(LPDWORD)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;dwCmpKey,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;lpOverlapped,&amp;nbsp;INFINITE);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;Simulate&amp;nbsp;workload&amp;nbsp;(for&amp;nbsp;debugging,&amp;nbsp;to&amp;nbsp;find&amp;nbsp;possible&amp;nbsp;reordering)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;Sleep(20);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;If&amp;nbsp;Something&amp;nbsp;whent&amp;nbsp;wrong..&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;bIORet)&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;IMG id=Codehighlighter1_808_972_Open_Image onclick="this.style.display='none'; Codehighlighter1_808_972_Open_Text.style.display='none'; Codehighlighter1_808_972_Closed_Image.style.display='inline'; Codehighlighter1_808_972_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_808_972_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_808_972_Closed_Text.style.display='none'; Codehighlighter1_808_972_Open_Image.style.display='inline'; Codehighlighter1_808_972_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_808_972_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_808_972_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;dwIOError&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;GetLastError();&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(dwIOError&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;WAIT_TIMEOUT)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;It&amp;nbsp;was&amp;nbsp;not&amp;nbsp;an&amp;nbsp;Time&amp;nbsp;out&amp;nbsp;event&amp;nbsp;we&amp;nbsp;wait&amp;nbsp;for&amp;nbsp;ever&amp;nbsp;(INFINITE)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_944_968_Open_Image onclick="this.style.display='none'; Codehighlighter1_944_968_Open_Text.style.display='none'; Codehighlighter1_944_968_Closed_Image.style.display='inline'; Codehighlighter1_944_968_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_944_968_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_944_968_Closed_Text.style.display='none'; Codehighlighter1_944_968_Open_Image.style.display='inline'; Codehighlighter1_944_968_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_944_968_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_944_968_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;continue&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;if&amp;nbsp;(!bIORet)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(bIORet&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;lpOverlapped&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;dwCmpKey)&amp;nbsp;&lt;BR&gt;&lt;IMG id=Codehighlighter1_1037_1329_Open_Image onclick="this.style.display='none'; Codehighlighter1_1037_1329_Open_Text.style.display='none'; Codehighlighter1_1037_1329_Closed_Image.style.display='inline'; Codehighlighter1_1037_1329_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_1037_1329_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1037_1329_Closed_Text.style.display='none'; Codehighlighter1_1037_1329_Open_Image.style.display='inline'; Codehighlighter1_1037_1329_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_1037_1329_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_1037_1329_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pOverlapBuff&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;CONTAINING_RECORD(lpOverlapped,&amp;nbsp;TESTOVERLAPPED,&amp;nbsp;m_ol);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(pOverlapBuff&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;NULL)&lt;BR&gt;&lt;IMG id=Codehighlighter1_1139_1300_Open_Image onclick="this.style.display='none'; Codehighlighter1_1139_1300_Open_Text.style.display='none'; Codehighlighter1_1139_1300_Closed_Image.style.display='inline'; Codehighlighter1_1139_1300_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_1139_1300_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1139_1300_Closed_Text.style.display='none'; Codehighlighter1_1139_1300_Open_Image.style.display='inline'; Codehighlighter1_1139_1300_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_1139_1300_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_1139_1300_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;pThis-&amp;gt;ProcessIOMessage(pOverlapBuff,&amp;nbsp;dwCmpKey,&amp;nbsp;dwIoSize);&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;ThreaId：0x%x %d %s &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,GetCurrentThreadId(),dwCmpKey,pOverlapBuff&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;szData);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;delete&amp;nbsp;pOverlapBuff;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;((dwCmpKey&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;==&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;NULL)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(pOverlapBuff&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;==&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;NULL)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;m_bShutDown)&lt;BR&gt;&lt;IMG id=Codehighlighter1_1401_1423_Open_Image onclick="this.style.display='none'; Codehighlighter1_1401_1423_Open_Text.style.display='none'; Codehighlighter1_1401_1423_Closed_Image.style.display='inline'; Codehighlighter1_1401_1423_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_1401_1423_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1401_1423_Closed_Text.style.display='none'; Codehighlighter1_1401_1423_Open_Image.style.display='inline'; Codehighlighter1_1401_1423_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_1401_1423_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_1401_1423_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bError&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;TRUE;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Thread&amp;nbsp;dead!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xdead&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;_tmain(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;argc,&amp;nbsp;_TCHAR&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;argv[])&lt;BR&gt;&lt;IMG id=Codehighlighter1_1515_2234_Open_Image onclick="this.style.display='none'; Codehighlighter1_1515_2234_Open_Text.style.display='none'; Codehighlighter1_1515_2234_Closed_Image.style.display='inline'; Codehighlighter1_1515_2234_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_1515_2234_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1515_2234_Closed_Text.style.display='none'; Codehighlighter1_1515_2234_Open_Image.style.display='inline'; Codehighlighter1_1515_2234_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_1515_2234_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_1515_2234_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_hCompletionPort&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CreateIoCompletionPort(&amp;nbsp;INVALID_HANDLE_VALUE,&amp;nbsp;NULL,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uintptr_t&amp;nbsp;hThread&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;_beginthreadex(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,IOWorkerThreadProc,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&amp;nbsp;NULL);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hThread&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;_beginthreadex(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,IOWorkerThreadProc,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&amp;nbsp;NULL);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hThread&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;_beginthreadex(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,IOWorkerThreadProc,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&amp;nbsp;NULL);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_bShutDown&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;i&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&amp;nbsp;i&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;30&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&amp;nbsp;i&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;++&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;IMG id=Codehighlighter1_1846_2131_Open_Image onclick="this.style.display='none'; Codehighlighter1_1846_2131_Open_Text.style.display='none'; Codehighlighter1_1846_2131_Closed_Image.style.display='inline'; Codehighlighter1_1846_2131_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_1846_2131_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1846_2131_Closed_Text.style.display='none'; Codehighlighter1_1846_2131_Open_Image.style.display='inline'; Codehighlighter1_1846_2131_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_1846_2131_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_1846_2131_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;dwCmpKey&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;i;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TESTOVERLAPPED&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;pOverlapBuff&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;TESTOVERLAPPED;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(pOverlapBuff&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;szData,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;sizeof&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(pOverlapBuff&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;szData));&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sprintf(pOverlapBuff&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;szData,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;CMD&amp;nbsp;ID：%d&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,i);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PostQueuedCompletionStatus(m_hCompletionPort,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&amp;nbsp;(ULONG_PTR)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;dwCmpKey,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;pOverlapBuff&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;m_ol);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_bShutDown&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;TRUE;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PostQueuedCompletionStatus(m_hCompletionPort,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;getchar();&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;输出：&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #000000"&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0x890&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0x890&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;3&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xa18&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xc90&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xc90&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;6&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xc90&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;7&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xc90&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;8&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xc90&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;9&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xc90&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;10&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xc90&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;11&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xa18&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;5&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xa18&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;13&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xa18&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;14&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xa18&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;15&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xa18&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;16&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xa18&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;17&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xa18&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;18&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xa18&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;19&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xa18&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;20&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xa18&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;21&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xa18&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;22&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xa18&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;23&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0x890&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;4&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xc90&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;12&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xa18&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;24&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xa18&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;27&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xc90&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;26&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0x890&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;25&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xa18&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;28&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ThreaId：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xc90&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1310516&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;CMD&amp;nbsp;ID：&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;29&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;Thread&amp;nbsp;dead&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/STRONG&gt;&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/33472.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>玻璃小屋</dc:creator><title>Windows 下面的IOCP有关的数据包 分包、拆包机制。</title><link>http://blog.vckbase.com/zaboli/archive/2008/03/14/32932.html</link><pubDate>Fri, 14 Mar 2008 07:31:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2008/03/14/32932.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/32932.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2008/03/14/32932.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/32932.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/32932.html</trackback:ping><description>&lt;BR&gt;1、IOCP 在异步投递数据的时候，是把数据缓冲区锁定的，就是在你投递之后，在它实际通过网络发送之前，你投递了多大的缓冲区，他就锁定多大。&lt;BR&gt;2、通常在写socket 连接很多的服务端程序的时候，我们都期望把内存分配机制写成内存池的方式，就是避免频繁的从系统中申请和释放内存，据说这样会增加内存碎片。&lt;BR&gt;3、通常我们每次发送的不同用途的实际数据包的大小都不是固定的。&lt;BR&gt;&lt;BR&gt;由于以上几点，就决定了以下事实：&lt;BR&gt;&lt;BR&gt;写内存池时，一般情况下都是固定大小的内存块。如果按程序中 最大的实际数据包的大小来规定内存池每个内存块的大小。当发送数据包时，会造成IOCP锁定数据包，浪费内存。比如 struct SendData 大小是 2048 bytes，struct LogData 大小是 256 bytes。这时如果按 2048bytes 当内存池中内存块的大小，那么 我每分配一个 LogData 也将占用&amp;nbsp;&amp;nbsp;2048 bytes 。这无疑是很大的浪费。所以为了避免浪费或减少浪费，我们可以定义内存池中的内存块的大小为 512 bytes，这时N bytes (n &amp;gt; 512) 大小的数据包，需要分成 n/512 个包 来发送。&lt;BR&gt;&lt;BR&gt;这样，对于 TCP 数据流来说，我们在发送时 需要把自己的实际数据包 先分解成 每 512 bytes 大小的 二级分包，然后再一包一包的发送。&lt;BR&gt;在接收时，我们需要从TCP数据流中 先拆分出 二级分包。然后再从二级分包中组合出我们的实际数据包。&lt;BR&gt;&lt;BR&gt;&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/32932.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>玻璃小屋</dc:creator><title>老外好人多~~ hook winsocket 的开原代码~~</title><link>http://blog.vckbase.com/zaboli/archive/2007/01/30/24339.html</link><pubDate>Tue, 30 Jan 2007 03:21:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2007/01/30/24339.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/24339.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2007/01/30/24339.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/24339.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/24339.html</trackback:ping><description>&lt;BR&gt;&lt;A href="http://www.viksoe.dk/code/wepmetering.htm"&gt;http://www.viksoe.dk/code/wepmetering.htm&lt;/A&gt;&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/24339.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>玻璃小屋</dc:creator><title>detours   IAT  SPI 记几个关键字。</title><link>http://blog.vckbase.com/zaboli/archive/2007/01/25/24228.html</link><pubDate>Thu, 25 Jan 2007 15:52:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2007/01/25/24228.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/24228.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2007/01/25/24228.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/24228.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/24228.html</trackback:ping><description>关于拦截、修改 socket 数据的。&lt;BR&gt;呵呵，以后随笔不要写了。。。记住开发中要用的技术的关键字，然后 baidu就可以了&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/24228.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>玻璃小屋</dc:creator><title>重叠模型的UDP(转自http://community.csdn.net/Expert/TopicView3.asp?id=4984210)</title><link>http://blog.vckbase.com/zaboli/archive/2006/11/19/23157.html</link><pubDate>Sun, 19 Nov 2006 02:04:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2006/11/19/23157.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/23157.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2006/11/19/23157.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/23157.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/23157.html</trackback:ping><description>&lt;TABLE cellSpacing=0 cellPadding=0 width=580 border=0&gt;
&lt;TBODY&gt;
&lt;TR class=color1 height=25&gt;
&lt;TD width=20&gt;&lt;/TD&gt;
&lt;TD width=360&gt;&lt;FONT color=#3366cc&gt;回复人：&lt;B&gt;&lt;A href="http://message.csdn.net/SendMessage.aspx?To=f_acme" target=_blank&gt;&lt;FONT color=#3366cc&gt;f_acme(沧海一声笑) &lt;/FONT&gt;&lt;/A&gt;&lt;/B&gt;&lt;FONT color=#000000&gt;( &lt;IMG title=一级(初级) alt=一级(初级) src="http://community.csdn.net/expert/images/rank/user1.gif"&gt;) 信誉：100&lt;/FONT&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD width=120&gt;&lt;FONT color=#000000&gt;2006-9-2 11:48:13&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD width=80&gt;&lt;FONT color=#000000&gt;得分:&lt;/FONT&gt;&lt;FONT color=#000000&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD bgColor=#0066cc colSpan=4 height=1&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD colSpan=4 height=5&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT color=#ffffff&gt;?&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD colSpan=3&gt;
&lt;TABLE style="TABLE-LAYOUT: fixed" cellPadding=3 width=580&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;DIV style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"&gt;&lt;BR&gt;我用重叠模型写的UDP服务器，也是用于音视频传输的，不过我的这是服务器方面的，不是客户端的，贴出来给大家参考下，觉得有点不好，各位顺便提下意见：&lt;BR&gt;&lt;BR&gt;DWORD WINAPI Server::CreateRecvUDPThread(LPVOID lpParam)&lt;BR&gt;{&lt;BR&gt;Server* lp_this = (Server*)lpParam;&lt;BR&gt;&lt;BR&gt;lp_this-&amp;gt;m_udpFront = 0;&lt;BR&gt;lp_this-&amp;gt;m_udpTail = 0;&lt;BR&gt;memset(&amp;amp;lp_this-&amp;gt;m_udpDataQueue, 0, sizeof(UDPData)*UDPQUEUELEN);&lt;BR&gt;DWORD id;&lt;BR&gt;//UDPThread为处理UDP数据线程，我用的是一个接收数据线程，一个处理线程，此为接收线程&lt;BR&gt;::CreateThread(NULL, 0, UDPThread, lp_this, 0, &amp;amp;id);&lt;BR&gt;&lt;BR&gt;WSAOVERLAPPED ol;&lt;BR&gt;WSAEVENT hEvent[10];&lt;BR&gt;WSABUF wsaBuf;&lt;BR&gt;DWORD nRecv = 0;&lt;BR&gt;DWORD bFlag = 0;&lt;BR&gt;DWORD dwTrans = 0;&lt;BR&gt;DWORD nRet = 0;&lt;BR&gt;&lt;BR&gt;int count = 0;&lt;BR&gt;int index;&lt;BR&gt;char buf[BUFFER_SIZE] = {'\0'};&lt;BR&gt;&lt;BR&gt;SOCKADDR_IN from;&lt;BR&gt;int fromLen = sizeof(SOCKADDR_IN);&lt;BR&gt;&lt;BR&gt;hEvent[0] = WSACreateEvent();&lt;BR&gt;wsaBuf.buf = buf;&lt;BR&gt;wsaBuf.len = BUFFER_SIZE;&lt;BR&gt;memset(&amp;amp;ol, 0, sizeof(WSAOVERLAPPED));&lt;BR&gt;ol.hEvent = hEvent[0];&lt;BR&gt;&lt;BR&gt;//循环接受UDP数据包&lt;BR&gt;while(true)&lt;BR&gt;{&lt;BR&gt;nRet = WSARecvFrom(lp_this-&amp;gt;m_udpsock, &amp;amp;wsaBuf, 1, &amp;amp;nRecv, &amp;amp;bFlag, (sockaddr*)&amp;amp;from, &amp;amp;fromLen, &amp;amp;ol, NULL);&lt;BR&gt;if (nRet ==SOCKET_ERROR) &lt;BR&gt;{ &lt;BR&gt;if (WSAGetLastError() != WSA_IO_PENDING) &lt;BR&gt;{&lt;BR&gt;lp_this-&amp;gt;Error("wsarecv error!");&lt;BR&gt;return 0;&lt;BR&gt;}&lt;BR&gt;index = WSAWaitForMultipleEvents(1, hEvent, FALSE, WSA_INFINITE, FALSE);&lt;BR&gt;index -= WSA_WAIT_EVENT_0;&lt;BR&gt;WSAResetEvent(hEvent[index]);&lt;BR&gt;switch(index)&lt;BR&gt;{&lt;BR&gt;case 0:&lt;BR&gt;{&lt;BR&gt;WSAGetOverlappedResult(lp_this-&amp;gt;m_udpsock, &amp;amp;ol, &amp;amp;dwTrans, FALSE, &amp;amp;bFlag);&lt;BR&gt;if(dwTrans == 0)&lt;BR&gt;{&lt;BR&gt;lp_this-&amp;gt;Error("WSAGetOverlappedResult error!");&lt;BR&gt;//WSACloseEvent(hEvent[index]);&lt;BR&gt;//return 0;&lt;BR&gt;continue;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;//拷贝接收到的数据到缓冲队列中，用于处理线程进行处理&lt;BR&gt;lp_this-&amp;gt;m_udpTail = (lp_this-&amp;gt;m_udpTail + 1) % UDPQUEUELEN;&lt;BR&gt;lp_this-&amp;gt;m_udpDataQueue[lp_this-&amp;gt;m_udpTail].len = dwTrans;&lt;BR&gt;memcpy(lp_this-&amp;gt;m_udpDataQueue[lp_this-&amp;gt;m_udpTail].buff, wsaBuf.buf, dwTrans);&lt;BR&gt;memcpy((char*)&amp;amp;lp_this-&amp;gt;m_udpDataQueue[lp_this-&amp;gt;m_udpTail].from, (char*)&amp;amp;from, sizeof(from));&lt;BR&gt;//通知处理线程有数据&lt;BR&gt;::PostThreadMessage(id, WM_UDPDATA, NULL, NULL);&lt;BR&gt;&lt;BR&gt;wsaBuf.buf = buf;&lt;BR&gt;wsaBuf.len = BUFFER_SIZE;&lt;BR&gt;}&lt;BR&gt;break;&lt;BR&gt;default:&lt;BR&gt;lp_this-&amp;gt;Error("default error!");&lt;BR&gt;break;&lt;BR&gt;}&lt;BR&gt;}&lt;BR&gt;}&lt;BR&gt;return 0;&lt;BR&gt;}&lt;BR&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;A href="http://community.csdn.net/Expert/TopicView3.asp?id=4984210"&gt;http://community.csdn.net/Expert/TopicView3.asp?id=4984210&lt;/A&gt;&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/23157.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>玻璃小屋</dc:creator><title>关于MFC的CSocket和CAsyncSocket封装的一个大误解！</title><link>http://blog.vckbase.com/zaboli/archive/2006/10/23/22843.html</link><pubDate>Mon, 23 Oct 2006 05:51:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2006/10/23/22843.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/22843.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2006/10/23/22843.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/22843.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/22843.html</trackback:ping><description>&lt;P&gt;说实话！开始用CSocket和 CAsyncSocket的时候觉的很好用。都是用来写客户端的嘛！比如 ftp啦，什么的。都是单线程的。&lt;BR&gt;可是后来做的多了，听的多了。似乎大家都对CSocket和CAsyncSocket斥之以鼻！后来要写服务器方面的程序了连接多了，线程模式也是多线程了。查了很多资料，都说这两个封装的效率很低。似乎是每创建一个CSocket对象，都会创建一个窗口。这样的话，如果写服务器程序，几百几千个socket的话，就有几百几千的windows了。。。那就晕了。。。。。&lt;BR&gt;&lt;BR&gt;直到某一天有了如下我老人家自以为是，最后砸了自己的脚的对话：&lt;BR&gt;&lt;BR&gt;2006-10-23 12:39:26 周伯通&lt;BR&gt;CAsyncSocket的OnSend,OnSend等会重入吗？ &lt;/P&gt;
&lt;P&gt;2006-10-23 12:40:36 周伯通&lt;BR&gt;[:D] &lt;/P&gt;
&lt;P&gt;2006-10-23 12:41:17 ㊣毛毛&lt;BR&gt;啥叫重入？？包的顺序混乱？ &lt;BR&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;2006-10-23 12:41:30 ㊣毛毛&lt;BR&gt;写服务端？还是客户端？ &lt;BR&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;2006-10-23 12:42:19 周伯通&lt;BR&gt;就是一个OnReceive没结束，令一个OnReceive又开始了 &lt;/P&gt;
&lt;P&gt;2006-10-23 12:42:32 周伯通&lt;BR&gt;老大，你连这个都不懂？ &lt;/P&gt;
&lt;P&gt;2006-10-23 12:42:41 周伯通&lt;BR&gt;我今天眼花了？ &lt;/P&gt;
&lt;P&gt;2006-10-23 12:43:45 ㊣毛毛&lt;BR&gt;他是基于消息的。 &lt;BR&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;2006-10-23 12:44:23 周伯通&lt;BR&gt;进不进对列？ &lt;/P&gt;
&lt;P&gt;2006-10-23 12:45:05 ㊣毛毛&lt;BR&gt;[:L] &lt;BR&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;2006-10-23 12:45:20 周伯通&lt;BR&gt;[:D] &lt;/P&gt;
&lt;P&gt;2006-10-23 12:45:35 周伯通&lt;BR&gt;你是汉正街的水货 &lt;/P&gt;
&lt;P&gt;2006-10-23 12:45:53 ㊣毛毛&lt;BR&gt;每个CAsyncSocket都有一个窗口。 &lt;BR&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;2006-10-23 12:46:08 周伯通&lt;BR&gt;你是汉正街的水货 &lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;2006-10-23 12:46:28 ㊣毛毛&lt;BR&gt;当有数据的时候，socket 会发消息给这个窗口。 &lt;BR&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;2006-10-23 12:47:01 周伯通&lt;BR&gt;每个调用了AfxSockInit的线程都只有一个窗口！ &lt;/P&gt;
&lt;P&gt;2006-10-23 12:47:23 周伯通&lt;BR&gt;五年前我最喜欢哪这个问题考别人 &lt;/P&gt;
&lt;P&gt;2006-10-23 12:47:35 ㊣毛毛&lt;BR&gt;我真晕。。。 &lt;BR&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;2006-10-23 12:47:40 周伯通&lt;BR&gt;[:D] &lt;/P&gt;
&lt;P&gt;2006-10-23 12:48:31 周伯通&lt;BR&gt;1000个连接要是有1000个隐藏窗口，硬件厂商就高兴了 &lt;/P&gt;
&lt;P&gt;2006-10-23 12:48:36 周伯通&lt;BR&gt;[:D] &lt;/P&gt;
&lt;P&gt;2006-10-23 12:49:51 周伯通&lt;BR&gt;你是开发人员？还是冒牌的？ &lt;/P&gt;
&lt;P&gt;2006-10-23 12:49:55 周伯通&lt;BR&gt;[:D] &lt;/P&gt;
&lt;P&gt;2006-10-23 12:50:04 ㊣毛毛&lt;BR&gt;唉。 &lt;BR&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;2006-10-23 12:50:41 周伯通&lt;BR&gt;[:P] &lt;/P&gt;
&lt;P&gt;2006-10-23 12:52:03 周伯通&lt;BR&gt;别生气，开个玩笑 &lt;/P&gt;
&lt;P&gt;2006-10-23 12:54:06 周伯通&lt;BR&gt;{5CBB6 &lt;/P&gt;
&lt;P&gt;2006-10-23 13:02:55 周伯通&lt;BR&gt;伤心了？ &lt;/P&gt;
&lt;P&gt;2006-10-23 13:03:00 周伯通&lt;BR&gt;自卑了？ &lt;/P&gt;
&lt;P&gt;2006-10-23 13:08:06 周伯通&lt;BR&gt;I am sorry! &lt;/P&gt;
&lt;P&gt;2006-10-23 13:09:33 ㊣毛毛&lt;BR&gt;刚刚查了半天代码。。应该是每个线程一个窗口！ &lt;BR&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;2006-10-23 13:09:49 ㊣毛毛&lt;BR&gt;每个有 CSocket的线程！ &lt;BR&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;2006-10-23 13:10:01 周伯通&lt;BR&gt;也不一定 &lt;/P&gt;
&lt;P&gt;2006-10-23 13:10:09 ㊣毛毛&lt;BR&gt;应该是的。 &lt;BR&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;2006-10-23 13:10:29 周伯通&lt;BR&gt;关键是看该线程是否调用AfxSockInit &lt;/P&gt;
&lt;P&gt;2006-10-23 13:11:03 ㊣毛毛&lt;BR&gt;。。。不调用根本就不能用 socket 函数 -.- &lt;BR&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;2006-10-23 13:11:26 周伯通&lt;BR&gt;取决与AfxSockInit创建的一个数据结构，就是那个我特烦的模块线程状态 &lt;/P&gt;
&lt;P&gt;2006-10-23 13:11:54 周伯通&lt;BR&gt;因为有人可能只在主线程中Call sockInit &lt;/P&gt;
&lt;P&gt;2006-10-23 13:13:43 周伯通&lt;BR&gt;我不知道这样做现在还可不可以！！ &lt;/P&gt;
&lt;P&gt;2006-10-23 13:14:02 周伯通&lt;BR&gt;Long Long ago是可以的 &lt;/P&gt;
&lt;P&gt;2006-10-23 13:16:31 ㊣毛毛&lt;BR&gt;按他的模式，是每个线程都有一个 socket wnd.. &lt;BR&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;2006-10-23 13:16:58 周伯通&lt;BR&gt;对 &lt;/P&gt;
&lt;P&gt;2006-10-23 13:17:08 周伯通&lt;BR&gt;但他又。。 &lt;/P&gt;
&lt;P&gt;2006-10-23 13:17:17 周伯通&lt;BR&gt;唉 &lt;/P&gt;
&lt;P&gt;2006-10-23 13:17:26 周伯通&lt;BR&gt;不清不白 &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;。。。所以结论应该是：不是创建一个新的CSocket对象就要创建一个新的窗口。而是同一个线程里面的 CSocket对象共享一个m_hSocketWindow。所以这样看来，我以前的每个CSocket一个窗口的想法就错了，所以按此想法推理的CSocket写服务器程序效率的结论似乎也占不住脚！CSocket应该还是不错的封装！效率差在什么地方？？差在低层消息循环的开销？可是其他模型在实际工程中的同步什么的开销也应该不少吧？？请路过的老鸟指教？？&lt;BR&gt;&lt;BR&gt;另外 线程数据的结构如下，摘自afxstat_.h&lt;BR&gt;&lt;BR&gt;// AFX_MODULE_THREAD_STATE (local to thread *and* module)&lt;BR&gt;class AFX_MODULE_THREAD_STATE : public CNoTrackObject&lt;BR&gt;{&lt;BR&gt;public:&lt;BR&gt;&amp;nbsp;AFX_MODULE_THREAD_STATE();&lt;BR&gt;&amp;nbsp;virtual ~AFX_MODULE_THREAD_STATE();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;// current CWinThread pointer&lt;BR&gt;&amp;nbsp;CWinThread* m_pCurrentWinThread;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;// list of CFrameWnd objects for thread&lt;BR&gt;&amp;nbsp;CTypedSimpleList&amp;lt;CFrameWnd*&amp;gt; m_frameList;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;// temporary/permanent map state&lt;BR&gt;&amp;nbsp;DWORD m_nTempMapLock;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if not 0, temp maps locked&lt;BR&gt;&amp;nbsp;CHandleMap* m_pmapHWND;&lt;BR&gt;&amp;nbsp;CHandleMap* m_pmapHMENU;&lt;BR&gt;&amp;nbsp;CHandleMap* m_pmapHDC;&lt;BR&gt;&amp;nbsp;CHandleMap* m_pmapHGDIOBJ;&lt;BR&gt;&amp;nbsp;CHandleMap* m_pmapHIMAGELIST;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;// thread-local MFC new handler (separate from C-runtime)&lt;BR&gt;&amp;nbsp;_PNH m_pfnNewHandler;&lt;/P&gt;
&lt;P&gt;#ifndef _AFX_NO_SOCKET_SUPPORT&lt;BR&gt;&amp;nbsp;// WinSock specific thread state&lt;BR&gt;&amp;nbsp;HWND m_hSocketWindow;&lt;BR&gt;#ifdef _AFXDLL&lt;BR&gt;&amp;nbsp;CEmbeddedButActsLikePtr&amp;lt;CMapPtrToPtr&amp;gt; m_pmapSocketHandle;&lt;BR&gt;&amp;nbsp;CEmbeddedButActsLikePtr&amp;lt;CMapPtrToPtr&amp;gt; m_pmapDeadSockets;&lt;BR&gt;&amp;nbsp;CEmbeddedButActsLikePtr&amp;lt;CPtrList&amp;gt; m_plistSocketNotifications;&lt;BR&gt;#else&lt;BR&gt;&amp;nbsp;CMapPtrToPtr* m_pmapSocketHandle;&lt;BR&gt;&amp;nbsp;CMapPtrToPtr* m_pmapDeadSockets;&lt;BR&gt;&amp;nbsp;CPtrList* m_plistSocketNotifications;&lt;BR&gt;#endif&lt;BR&gt;#endif&lt;/P&gt;
&lt;P&gt;&amp;nbsp;// common controls thread state&lt;BR&gt;&amp;nbsp;CToolTipCtrl* m_pToolTip;&lt;BR&gt;&amp;nbsp;CWnd* m_pLastHit;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // last window to own tooltip&lt;BR&gt;&amp;nbsp;INT_PTR m_nLastHit;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // last hittest code&lt;BR&gt;&amp;nbsp;TOOLINFO* m_pLastInfo;&amp;nbsp;&amp;nbsp;&amp;nbsp; // last TOOLINFO structure&lt;BR&gt;&amp;nbsp;INT_PTR m_nLastStatus;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // last flyby status message&lt;BR&gt;&amp;nbsp;CControlBar* m_pLastStatus; // last flyby status control bar&lt;BR&gt;};&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/22843.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>玻璃小屋</dc:creator><title>(zt) Socket 的 Send Recv 的长度问题?</title><link>http://blog.vckbase.com/zaboli/archive/2006/01/19/17157.html</link><pubDate>Thu, 19 Jan 2006 05:38:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2006/01/19/17157.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/17157.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2006/01/19/17157.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/17157.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/17157.html</trackback:ping><description>一个包没有固定长度，以太网限制在46－1500字节，1500就是以太网的MT&lt;BR&gt;&lt;BR&gt;U，超过这个量，TCP会为IP数据报设置偏移量进行分片传输，现在一般可&lt;BR&gt;&lt;BR&gt;允许应用层设置8k（NTFS系统）的缓冲区，8k的数据由底层分片，而应用&lt;BR&gt;&lt;BR&gt;层看来只是一次发送。&lt;BR&gt;&lt;BR&gt;windows的缓冲区经验值是4k&lt;BR&gt;&lt;BR&gt;Socket本身分为两种，流(TCP)和数据报(UDP)，你的问题针对这两种不同&lt;BR&gt;&lt;BR&gt;使用而结论不一样。甚至还和你是用阻塞、还是非阻塞Socket来编程有关&lt;BR&gt;&lt;BR&gt;。&lt;BR&gt;1、通信长度，这个是你自己决定的，没有系统强迫你要发多大的包，实&lt;BR&gt;&lt;BR&gt;际应该根据需求和网络状况来决定。对于TCP，这个长度可以大点，但要&lt;BR&gt;&lt;BR&gt;知道，Socket内部默认的收发缓冲区大小大概是8K，你可以用SetSockOpt&lt;BR&gt;&lt;BR&gt;来改变。但对于UDP，就不要太大，一般在1024至10K。注意一点，你无论&lt;BR&gt;&lt;BR&gt;发多大的包，IP层和链路层都会把你的包进行分片发送，一般局域网就是&lt;BR&gt;&lt;BR&gt;1500左右，广域网就只有几十字节。分片后的包将经过不同的路由到达接&lt;BR&gt;&lt;BR&gt;收方，对于UDP而言，要是其中一个分片丢失，那么接收方的IP层将把整&lt;BR&gt;&lt;BR&gt;个发送包丢弃，这就形成丢包。显然，要是一个UDP发包佷大，它被分片&lt;BR&gt;&lt;BR&gt;后，链路层丢失分片的几率就佷大，你这个UDP包，就佷容易丢失，但是&lt;BR&gt;&lt;BR&gt;太小又影响效率。最好可以配置这个值，以根据不同的环境来调整到最佳&lt;BR&gt;&lt;BR&gt;状态。&lt;BR&gt;send()函数返回了实际发送的长度，在网络不断的情况下，它绝不会返回&lt;BR&gt;&lt;BR&gt;(发送失败的)错误，最多就是返回0。对于TCP你可以字节写一个循环发送&lt;BR&gt;&lt;BR&gt;。当send函数返回SOCKET_ERROR时，才标志着有错误。&lt;BR&gt;但对于UDP，你不要写循环发送，否则将给你的接收带来极大的麻烦。所&lt;BR&gt;&lt;BR&gt;以UDP需要用SetSockOpt来改变Socket内部Buffer的大小，以能容纳你的&lt;BR&gt;&lt;BR&gt;发包。明确一点，TCP作为流，发包是不会整包到达的，而是源源不断的&lt;BR&gt;&lt;BR&gt;到，那接收方就必须组包。而UDP作为消息或数据报，它一定是整包到达&lt;BR&gt;&lt;BR&gt;接收方。&lt;BR&gt;&lt;BR&gt;2、关于接收，一般的发包都有包边界，首要的就是你这个包的长度要让&lt;BR&gt;&lt;BR&gt;接收方知道，于是就有个包头信息，对于TCP，接收方先收这个包头信息&lt;BR&gt;&lt;BR&gt;，然后再收包数据。一次收齐整个包也可以，可要对结果是否收齐进行验&lt;BR&gt;&lt;BR&gt;证。这也就完成了组包过程。UDP，那你只能整包接收了。要是你提供的&lt;BR&gt;&lt;BR&gt;接收Buffer过小，TCP将返回实际接收的长度，余下的还可以收，而UDP不&lt;BR&gt;&lt;BR&gt;同的是，余下的数据被丢弃并返回WSAEMSGSIZE错误。注意TCP，要是你提&lt;BR&gt;&lt;BR&gt;供的Buffer佷大，那么可能收到的就是多个发包，你必须分离它们，还有&lt;BR&gt;&lt;BR&gt;就是当Buffer太小，而一次收不完Socket内部的数据，那么Socket接收事&lt;BR&gt;&lt;BR&gt;件(OnReceive)，可能不会再触发，使用事件方式进行接收时，密切注意&lt;BR&gt;&lt;BR&gt;这点。这些特性就是体现了流和数据包的区别。&lt;BR&gt;&lt;BR&gt;补充一点，接收BuffSize &amp;gt;= 发送BuffSize &amp;gt;= 实际发送Size，对于内外&lt;BR&gt;&lt;BR&gt;部的Buffer都适用，上面讲的主要是Socket内部的Buffer大小关系。&lt;BR&gt;&lt;BR&gt;3、TCP是有多少就收多少，如果没有当然阻塞Socket的recv就会等，直到&lt;BR&gt;&lt;BR&gt;有数据，非阻塞Socket不好等，而是返回WSAEWOULDBLOCK。UDP，如果没&lt;BR&gt;&lt;BR&gt;有数据，阻塞Socket就会等，非阻塞Socket也返回WSAEWOULDBLOCK。如果&lt;BR&gt;&lt;BR&gt;有数据，它是会等整个发包到齐，并接收到整个发包，才返回。&lt;BR&gt;&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/17157.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>玻璃小屋</dc:creator><title>（转）浅析:setsockopt()改善程序的健壮性</title><link>http://blog.vckbase.com/zaboli/archive/2005/11/25/15279.html</link><pubDate>Fri, 25 Nov 2005 08:27:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2005/11/25/15279.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/15279.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2005/11/25/15279.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/15279.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/15279.html</trackback:ping><description>浅析:setsockopt()改善程序的健壮性&lt;BR&gt;&lt;SPAN class=tpc_content&gt;&lt;BR&gt;转自：&lt;A href="http://www.sureserv.com/bbs/read.php?fid=26&amp;amp;tid=18&amp;amp;page=lastpost&amp;amp;fpage=1"&gt;http://www.sureserv.com/bbs/read.php?fid=26&amp;amp;tid=18&amp;amp;page=lastpost&amp;amp;fpage=1&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;关于DONTLINGER和SO_LINGER的讲究还不少 -_-&lt;BR&gt;&lt;BR&gt;不断的收到coolmei25 (梅生)的答谢，我都不好意思了（我都没帮到他),下面&lt;BR&gt;写出我在网络编程中的一点心得体会，希望对他(^_^也对大家)有帮助:&lt;BR&gt;1. 如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分）调用&lt;BR&gt;closesocket（一般不会立即关闭而经历TIME_WAIT的过程）后想继续重用该socket：&lt;BR&gt;BOOL bReuseaddr=TRUE;&lt;BR&gt;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&amp;amp;bReuseaddr,sizeof(BOOL));&lt;BR&gt;2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭，不经历&lt;BR&gt;TIME_WAIT的过程：&lt;BR&gt;BOOL bDontLinger = FALSE; &lt;BR&gt;setsockopt(s,SOL_SOCKET,SO_DONTLINGER,(const char*)&amp;amp;bDontLinger,sizeof(BOOL));&lt;BR&gt;3.在send(),recv()过程中有时由于网络状况等原因，发收不能预期进行,而设置收发时限：&lt;BR&gt;int nNetTimeout=1000;//1秒&lt;BR&gt;//发送时限&lt;BR&gt;setsockopt(socket，SOL_S0CKET,SO_SNDTIMEO，(char *)&amp;amp;nNetTimeout,sizeof(int));&lt;BR&gt;//接收时限&lt;BR&gt;setsockopt(socket，SOL_S0CKET,SO_RCVTIMEO，(char *)&amp;amp;nNetTimeout,sizeof(int));&lt;BR&gt;4.在send()的时候，返回的是实际发送出去的字节(同步)或发送到socket缓冲区的字节&lt;BR&gt;(异步);系统默认的状态发送和接收一次为8688字节(约为8.5K)；在实际的过程中发送数据&lt;BR&gt;和接收数据量比较大，可以设置socket缓冲区，而避免了send(),recv()不断的循环收发：&lt;BR&gt;// 接收缓冲区&lt;BR&gt;int nRecvBuf=32*1024;//设置为32K&lt;BR&gt;setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&amp;amp;nRecvBuf,sizeof(int));&lt;BR&gt;//发送缓冲区&lt;BR&gt;int nSendBuf=32*1024;//设置为32K&lt;BR&gt;setsockopt(s,SOL_SOCKET,SO_SNDBUF,(const char*)&amp;amp;nSendBuf,sizeof(int));&lt;BR&gt;5. 如果在发送数据的时，希望不经历由系统缓冲区到socket缓冲区的拷贝而影响&lt;BR&gt;程序的性能：&lt;BR&gt;int nZero=0;&lt;BR&gt;setsockopt(socket，SOL_S0CKET,SO_SNDBUF，(char *)&amp;amp;nZero,sizeof(nZero));&lt;BR&gt;6.同上在recv()完成上述功能(默认情况是将socket缓冲区的内容拷贝到系统缓冲区)：&lt;BR&gt;int nZero=0;&lt;BR&gt;setsockopt(socket，SOL_S0CKET,SO_RCVBUF，(char *)&amp;amp;nZero,sizeof(int));&lt;BR&gt;7.一般在发送UDP数据报的时候，希望该socket发送的数据具有广播特性：&lt;BR&gt;BOOL bBroadcast=TRUE; &lt;BR&gt;setsockopt(s,SOL_SOCKET,SO_BROADCAST,(const char*)&amp;amp;bBroadcast,sizeof(BOOL));&lt;BR&gt;8.在client连接服务器过程中，如果处于非阻塞模式下的socket在connect()的过程中可&lt;BR&gt;以设置connect()延时,直到accpet()被呼叫(本函数设置只有在非阻塞的过程中有显著的&lt;BR&gt;作用，在阻塞的函数调用中作用不大)&lt;BR&gt;BOOL bConditionalAccept=TRUE;&lt;BR&gt;setsockopt(s,SOL_SOCKET,SO_CONDITIONAL_ACCEPT,(const char*)&amp;amp;bConditionalAccept,sizeof(BOOL));&lt;BR&gt;9.如果在发送数据的过程中(send()没有完成，还有数据没发送)而调用了closesocket(),以前我们&lt;BR&gt;一般采取的措施是"从容关闭"shutdown(s,SD_BOTH),但是数据是肯定丢失了，如何设置让程序满足具体&lt;BR&gt;应用的要求(即让没发完的数据发送出去后在关闭socket)？&lt;BR&gt;struct linger {&lt;BR&gt;u_short l_onoff;&lt;BR&gt;u_short l_linger;&lt;BR&gt;};&lt;BR&gt;linger m_sLinger;&lt;BR&gt;m_sLinger.l_onoff=1;//(在closesocket()调用,但是还有数据没发送完毕的时候容许逗留)&lt;BR&gt;// 如果m_sLinger.l_onoff=0;则功能和2.)作用相同;&lt;BR&gt;m_sLinger.l_linger=5;//(容许逗留的时间为5秒)&lt;BR&gt;setsockopt(s,SOL_SOCKET,SO_LINGER,(const char*)&amp;amp;m_sLinger,sizeof(linger));&lt;BR&gt;Note:1.在设置了逗留延时，用于一个非阻塞的socket是作用不大的，最好不用;&lt;BR&gt;2.如果想要程序不经历SO_LINGER需要设置SO_DONTLINGER，或者设置l_onoff=0；&lt;BR&gt;10.还一个用的比较少的是在SDI或者是Dialog的程序中，可以记录socket的调试信息：&lt;BR&gt;(前不久做过这个函数的测试，调式信息可以保存，包括socket建立时候的参数,采用的&lt;BR&gt;具体协议，以及出错的代码都可以记录下来）&lt;BR&gt;BOOL bDebug=TRUE;&lt;BR&gt;setsockopt(s,SOL_SOCKET,SO_DEBUG,(const char*)&amp;amp;bDebug,sizeof(BOOL));&lt;BR&gt;11.附加：往往通过setsockopt()设置了缓冲区大小，但还不能满足数据的传输需求，&lt;BR&gt;我的习惯是自己写个处理网络缓冲的类，动态分配内存;下面我将这个类写出，希望对&lt;BR&gt;初学者有所帮助：&lt;BR&gt;&lt;BR&gt;//仿照String 改写而成&lt;BR&gt;//==============================================================================&lt;BR&gt;// 二进制数据，主要用于收发网络缓冲区的数据&lt;BR&gt;// CNetIOBuffer 以 MFC 类 CString 的源代码作为蓝本改写而成，用法与 CString 类似，&lt;BR&gt;// 但是 CNetIOBuffer 中存放的是纯粹的二进制数据，'\0' 并不作为它的结束标志。&lt;BR&gt;// 其数据长度可以通过 GetLength() 获得，缓冲区地址可以通过运算符 LPBYTE 获得。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;//==============================================================================&lt;BR&gt;// Copyright (c) All-Vision Corporation. All rights reserved.&lt;BR&gt;// Module: NetObject&lt;BR&gt;// File: SimpleIOBuffer.h&lt;BR&gt;// Author: gdy119&lt;BR&gt;// Email : &lt;A href="mailto:8751webmaster@126.com"&gt;8751webmaster@126.com&lt;/A&gt;&lt;BR&gt;// Date: 2004.11.26&lt;BR&gt;//==============================================================================&lt;BR&gt;// NetIOBuffer.h&lt;BR&gt;#ifndef _NETIOBUFFER_H&lt;BR&gt;#define _NETIOBUFFER_H&lt;BR&gt;//=============================================================================&lt;BR&gt;#define MAX_BUFFER_LENGTH 1024*1024&lt;BR&gt;//=============================================================================&lt;BR&gt;//主要用来处理网络缓冲的数据&lt;BR&gt;class CNetIOBuffer &lt;BR&gt;{&lt;BR&gt;protected:&lt;BR&gt;LPBYTE m_pbinData;&lt;BR&gt;int m_nLength;&lt;BR&gt;int m_nTotalLength;&lt;BR&gt;CRITICAL_SECTIONm_cs;&lt;BR&gt;void Initvalibers();&lt;BR&gt;public:&lt;BR&gt;CNetIOBuffer();&lt;BR&gt;CNetIOBuffer(const LPBYTE lbbyte, int nLength);&lt;BR&gt;CNetIOBuffer(const CNetIOBuffer&amp;amp;binarySrc);&lt;BR&gt;virtual ~CNetIOBuffer();&lt;BR&gt;//=============================================================================&lt;BR&gt;BOOL CopyData(const LPBYTE lbbyte, int nLength);&lt;BR&gt;BOOL ConcatData(const LPBYTE lbbyte, int nLength);&lt;BR&gt;void ResetIoBuffer();&lt;BR&gt;int GetLength() const;&lt;BR&gt;BOOL SetLength(int nLen);&lt;BR&gt;LPBYTE GetCurPos();&lt;BR&gt;int GetRemainLen();&lt;BR&gt;BOOL IsEmpty() const;&lt;BR&gt;operator LPBYTE() const;&lt;BR&gt;static GetMaxLength() { return MAX_BUFFER_LENGTH; }&lt;BR&gt;const CNetIOBuffer&amp;amp; operator=(const CNetIOBuffer&amp;amp; buffSrc);&lt;BR&gt;};&lt;BR&gt;#endif // &lt;BR&gt;// NetOBuffer.cpp: implementation of the CNetIOBuffer class.&lt;BR&gt;//======================================================================&lt;BR&gt;#include "stdafx.h"&lt;BR&gt;#include "NetIOBuffer.h"&lt;BR&gt;//======================================================================&lt;BR&gt;//=======================================================================&lt;BR&gt;// Construction/Destruction&lt;BR&gt;CNetIOBuffer::CNetIOBuffer()&lt;BR&gt;{&lt;BR&gt;Initvalibers();&lt;BR&gt;&lt;BR&gt;}&lt;BR&gt;CNetIOBuffer::CNetIOBuffer(const LPBYTE lbbyte, int nLength)&lt;BR&gt;{&lt;BR&gt;Initvalibers();&lt;BR&gt;CopyData(lbbyte, nLength);&lt;BR&gt;}&lt;BR&gt;CNetIOBuffer::~CNetIOBuffer()&lt;BR&gt;{&lt;BR&gt;delete []m_pbinData;&lt;BR&gt;m_pbinData=NULL;&lt;BR&gt;DeleteCriticalSection(&amp;amp;m_cs);&lt;BR&gt;&lt;BR&gt;}&lt;BR&gt;CNetIOBuffer::CNetIOBuffer(const CNetIOBuffer&amp;amp;binarySrc)&lt;BR&gt;{&lt;BR&gt;&lt;BR&gt;Initvalibers();&lt;BR&gt;CopyData(binarySrc,binarySrc.GetLength());&lt;BR&gt;&lt;BR&gt;}&lt;BR&gt;void CNetIOBuffer::Initvalibers()&lt;BR&gt;{&lt;BR&gt;&lt;BR&gt;m_pbinData = NULL;&lt;BR&gt;m_nLength = 0;&lt;BR&gt;m_nTotalLength = MAX_BUFFER_LENGTH;&lt;BR&gt;if(m_pbinData==NULL)&lt;BR&gt;{&lt;BR&gt;m_pbinData=new BYTE[m_nTotalLength];&lt;BR&gt;ASSERT(m_pbinData!=NULL);&lt;BR&gt;}&lt;BR&gt;InitializeCriticalSection(&amp;amp;m_cs);&lt;BR&gt;}&lt;BR&gt;void CNetIOBuffer::ResetIoBuffer()&lt;BR&gt;{&lt;BR&gt;EnterCriticalSection(&amp;amp;m_cs);&lt;BR&gt;m_nLength = 0;&lt;BR&gt;memset(m_pbinData,0,m_nTotalLength);&lt;BR&gt;LeaveCriticalSection(&amp;amp;m_cs);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;BOOL CNetIOBuffer::CopyData(const LPBYTE lbbyte, int nLength)&lt;BR&gt;{&lt;BR&gt;if( nLength &amp;gt; MAX_BUFFER_LENGTH )&lt;BR&gt;return FALSE;&lt;BR&gt;&lt;BR&gt;ResetIoBuffer();&lt;BR&gt;EnterCriticalSection(&amp;amp;m_cs);&lt;BR&gt;memcpy(m_pbinData, lbbyte, nLength );&lt;BR&gt;m_nLength = nLength;&lt;BR&gt;LeaveCriticalSection(&amp;amp;m_cs);&lt;BR&gt;&lt;BR&gt;return TRUE;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;BOOL CNetIOBuffer::ConcatData(const LPBYTE lbbyte, int nLength)&lt;BR&gt;{&lt;BR&gt;if( m_nLength + nLength &amp;gt; MAX_BUFFER_LENGTH )&lt;BR&gt;return FALSE;&lt;BR&gt;&lt;BR&gt;EnterCriticalSection(&amp;amp;m_cs);&lt;BR&gt;memcpy(m_pbinData+m_nLength, lbbyte, nLength );&lt;BR&gt;m_nLength += nLength;&lt;BR&gt;LeaveCriticalSection(&amp;amp;m_cs);&lt;BR&gt;&lt;BR&gt;return TRUE;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;int CNetIOBuffer::GetLength() const&lt;BR&gt;{&lt;BR&gt;return m_nLength;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;BOOL CNetIOBuffer::SetLength(int nLen)&lt;BR&gt;{&lt;BR&gt;if( nLen &amp;gt; MAX_BUFFER_LENGTH )&lt;BR&gt;return FALSE;&lt;BR&gt;&lt;BR&gt;EnterCriticalSection(&amp;amp;m_cs);&lt;BR&gt;m_nLength = nLen;&lt;BR&gt;LeaveCriticalSection(&amp;amp;m_cs);&lt;BR&gt;&lt;BR&gt;return TRUE;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;LPBYTE CNetIOBuffer::GetCurPos()&lt;BR&gt;{&lt;BR&gt;&lt;BR&gt;if( m_nLength &amp;lt; MAX_BUFFER_LENGTH )&lt;BR&gt;&lt;BR&gt;return (m_pbinData+m_nLength);&lt;BR&gt;&lt;BR&gt;else&lt;BR&gt;return NULL;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;CNetIOBuffer:: operator LPBYTE() const&lt;BR&gt;{&lt;BR&gt;return m_pbinData;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;int CNetIOBuffer::GetRemainLen()&lt;BR&gt;{&lt;BR&gt;&lt;BR&gt;return MAX_BUFFER_LENGTH - m_nLength;&lt;BR&gt;&lt;BR&gt;}&lt;BR&gt;BOOL CNetIOBuffer::IsEmpty() const&lt;BR&gt;{&lt;BR&gt;return m_nLength == 0;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;const CNetIOBuffer&amp;amp; CNetIOBuffer:: operator=(const CNetIOBuffer&amp;amp; buffSrc)&lt;BR&gt;{&lt;BR&gt;if(&amp;amp;buffSrc!=this)&lt;BR&gt;{&lt;BR&gt;CopyData(buffSrc, buffSrc.GetLength());&lt;BR&gt;&lt;BR&gt;}&lt;BR&gt;return *this;&lt;BR&gt;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;回复人： PiggyXP(【小猪】●至爱VC，至爱网络版●) ( ) 信誉：204 &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;其实我觉得第5条很应该值得注意&lt;BR&gt;int nZero=0;&lt;BR&gt;setsockopt(socket，SOL_S0CKET,SO_SNDBUF，(char *)&amp;amp;nZero,sizeof(nZero));&lt;BR&gt;&lt;BR&gt;记得以前有些朋友讨论过，socket虽然send成功了，但是其实只是发送到数据缓冲区里面了，而并没有真正的在物理设备上发送出去；而通过这条语句，将发送缓冲区设置为0，即屏蔽掉发送缓冲以后，一旦send返回（当然是就阻塞套结字来说），就可以肯定数据已经在发送的途中了^_^，但是这样做也许会影响系统的性能&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;to:Sander() &lt;BR&gt;UDP也有拷贝过程，但是UDP包有最大限制为64K；&lt;BR&gt;TCP_NODELAY 一般用在the normal data stream 上；&lt;BR&gt;12.发送数据时候一般是系统缓冲区满以后才发送，现在设置为只要系统&lt;BR&gt;缓冲区有数据就立刻发送： &lt;BR&gt;BOOL bNodelay=TRUE;&lt;BR&gt;SetSockOpt(s,IPPROTO_TCP,TCP_NODELAY,(const char*)&amp;amp;bNodelayt,sizeof(BOOL));&lt;BR&gt;&lt;BR&gt;回复人： od4ys(风风) ( ) 信誉：100 &lt;BR&gt;&lt;BR&gt;setoptsock（）这个函数 设置成端口复用的时候，很容易对一些没有进行单独bind模式的程序造成危害。&lt;BR&gt;比如old的 ping icmp door，简单的sniffer后，收到包，然后设置setoptsock bind web服务，然后建立个cmd进程 bind再80端口。&lt;BR&gt;&lt;/SPAN&gt;&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/15279.html" width = "1" height = "1" /&gt;</description></item></channel></rss>