<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Networking (WinSock)</title>
		<link>http://www.allegro.cc/forums/view/588389</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 06 Nov 2006 00:14:34 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok...I am REALLY getting frustrated trying to figure this out!!! <img src="http://www.allegro.cc/forums/smileys/angry.gif" alt="&gt;:(" /> I am trying to create a client/server system that will be used in an upcoming game. I am trying to get the FD_xx options to work correctly. Can someone please take a look at this and tell me what (if anything) I am doing wrong? <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" /> The problem I am getting now is when I run the server, then the client...The server picks up that the client has sent data. Good...it should. But when I go to READ that data...I get the WinSock error: 10014 - WSAEFAULT. The description from Microsoft&#039;s docs:<br />-------------------------------------------------------------------------------------<br />WSAFAULT (10014): Bad address. <br />The system detected an invalid pointer address in attempting to use a pointer argument of a call. This error occurs if an application passes an invalid pointer value, or if the length of the buffer is too small. For instance, if the length of an argument which is a struct sockaddr is smaller than sizeof(struct sockaddr).<br />-------------------------------------------------------------------------------------<br />[EDIT]<br />Also: I sometimes get:<br />WSAECONNABORTED <br />(10053) <br />Software caused connection abort. <br />An established connection was aborted by the software in your host machine, possibly due to a data transmission timeout or protocol error. <br />-------------------------------------------------------------------------------------<br />The client was not disconnected...it was still running! Does this mean this is a firewall issue? It is just (well should be) running on the local machine, so I don&#039;t see why that would be an issue...::)<br />I am probably missing something somewhere...but my eyes can&#039;t see it right now...please...anyone help? <img src="http://www.allegro.cc/forums/smileys/rolleyes.gif" alt="::)" />
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">   2</span><span class="c">// &lt;Main.cpp&gt;</span>
<span class="number">   3</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">   4</span><span class="p">#define ALLEGRO_USE_CONSOLE</span>
<span class="number">   5</span><span class="p">#include &lt;allegro.h&gt;</span>
<span class="number">   6</span><span class="p">#include &lt;winalleg.h&gt;</span>
<span class="number">   7</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">   8</span><span class="p">#include &lt;winsock.h&gt;</span>
<span class="number">   9</span><span class="p">#include &lt;stdio.h&gt;</span>
<span class="number">  10</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  11</span><span class="p">#define BUFFERSIZE   255</span>
<span class="number">  12</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  13</span><span class="k1">int</span> main<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number">  14</span><span class="k2">{</span>
<span class="number">  15</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  16</span>  WORD        wsVersionRequested <span class="k3">=</span> MAKEWORD<span class="k2">(</span><span class="n">1</span>,<span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  17</span>  USHORT      iPort <span class="k3">=</span> <span class="n">42479</span><span class="k2">;</span>
<span class="number">  18</span>  SOCKET      sListenSocket <span class="k3">=</span> INVALID_SOCKET<span class="k2">;</span>
<span class="number">  19</span>  SOCKET      sAcceptSocket <span class="k3">=</span> INVALID_SOCKET<span class="k2">;</span>
<span class="number">  20</span>  WSADATA     wsaData<span class="k2">;</span>
<span class="number">  21</span>  FD_SET      fdRead<span class="k2">;</span>
<span class="number">  22</span>  FD_SET      fdWrite<span class="k2">;</span>
<span class="number">  23</span>  ULONG       iNonBlocking  <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  24</span>  <span class="k1">char</span>        iReuseAddress <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  25</span>  DWORD       dwFlags <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  26</span>  SOCKADDR_IN sInternetAddress<span class="k2">;</span>
<span class="number">  27</span>  SOCKADDR_IN sRemoteAddress<span class="k2">;</span>
<span class="number">  28</span>  <span class="k1">int</span>         iRemoteAddressLength <span class="k3">=</span> <span class="k1">sizeof</span><span class="k2">(</span>sRemoteAddress<span class="k2">)</span><span class="k2">;</span>
<span class="number">  29</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  30</span>  <span class="c">// [Network startup]</span>
<span class="number">  31</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Server...\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  32</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;&lt;WSAStartup&gt;-&gt;WinSock version(%i,%i)\n"</span>,LOBYTE<span class="k2">(</span>wsVersionRequested<span class="k2">)</span>,
<span class="number">  33</span>       HIBYTE<span class="k2">(</span>wsVersionRequested<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  34</span>  <span class="k1">if</span> <span class="k2">(</span> WSAStartup<span class="k2">(</span>wsVersionRequested,<span class="k3">&amp;</span>wsaData<span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span> <span class="k2">)</span>
<span class="number">  35</span>  <span class="k2">{</span>
<span class="number">  36</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Error!&lt;WSAStartup&gt;-&gt;%i\n"</span>,WSAGetLastError<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  37</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Shutdown started...\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  38</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Shut down.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  39</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Goodbye! :)\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  40</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  41</span>  <span class="k2">}</span>
<span class="number">  42</span>  <span class="k1">if</span> <span class="k2">(</span> LOBYTE<span class="k2">(</span>wsaData.wVersion<span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> LOBYTE<span class="k2">(</span>wsVersionRequested<span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span> 
<span class="number">  43</span>     HIBYTE<span class="k2">(</span>wsaData.wVersion<span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> HIBYTE<span class="k2">(</span>wsVersionRequested<span class="k2">)</span> <span class="k2">)</span>
<span class="number">  44</span>  <span class="k2">{</span>
<span class="number">  45</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Error!&lt;WSAStartup&gt;-&gt;Error setting requested version!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  46</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Shutdown started...\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  47</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Shutting down WinSock.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  48</span>    WSACleanup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  49</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Shut down.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  50</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Goodbye! :)\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  51</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  52</span>  <span class="k2">}</span>
<span class="number">  53</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  54</span>  <span class="c">// [Create listening socket]</span>
<span class="number">  55</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Attempting to create listening socket...\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  56</span>  sListenSocket <span class="k3">=</span> socket<span class="k2">(</span>PF_INET,SOCK_STREAM,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  57</span>  <span class="k1">if</span> <span class="k2">(</span> sListenSocket <span class="k3">=</span><span class="k3">=</span> INVALID_SOCKET <span class="k2">)</span>
<span class="number">  58</span>  <span class="k2">{</span>
<span class="number">  59</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Error! Listening socket invalid!-&gt;%i\n"</span>,WSAGetLastError<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  60</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Shutdown started...\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  61</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Shutting down WinSock.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  62</span>    WSACleanup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  63</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Shut down.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  64</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Goodbye! :)\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  65</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  66</span>  <span class="k2">}</span>
<span class="number">  67</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  68</span>  <span class="c">// [Set listening socket address]</span>
<span class="number">  69</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Setting listening socket address fields."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  70</span>  sInternetAddress.sin_family        <span class="k3">=</span> AF_INET<span class="k2">;</span>
<span class="number">  71</span>  sInternetAddress.sin_addr.s_addr   <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_464.html" target="_blank">htonl</a><span class="k2">(</span>INADDR_ANY<span class="k2">)</span><span class="k2">;</span>
<span class="number">  72</span>  sInternetAddress.sin_port          <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_465.html" target="_blank">htons</a><span class="k2">(</span>iPort<span class="k2">)</span><span class="k2">;</span>
<span class="number">  73</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_569.html" target="_blank">memset</a><span class="k2">(</span>sInternetAddress.sin_zero,<span class="s">'\0'</span>,<span class="n">8</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  74</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Done.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  75</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  76</span>  <span class="c">// [Bind listening socket]</span>
<span class="number">  77</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Attempting to bind listening socket.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  78</span>  <span class="k1">if</span> <span class="k2">(</span> bind<span class="k2">(</span>sListenSocket,<span class="k2">(</span><span class="k1">struct</span> sockaddr<span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span>sInternetAddress,
<span class="number">  79</span>          <span class="k1">sizeof</span><span class="k2">(</span>SOCKADDR_IN<span class="k2">)</span> <span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span> <span class="k2">)</span>
<span class="number">  80</span>  <span class="k2">{</span>
<span class="number">  81</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Error binding listening socket!-&gt;%i\n"</span>,WSAGetLastError<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  82</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Shutdown started...\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  83</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Closing listening socket.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  84</span>    closesocket<span class="k2">(</span>sListenSocket<span class="k2">)</span><span class="k2">;</span>
<span class="number">  85</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Shutting down WinSock.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  86</span>    WSACleanup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  87</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Shut down.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Goodbye! :)\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  89</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  90</span>  <span class="k2">}</span>
<span class="number">  91</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  92</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Setting listening socket to NON-BLOCKING mode.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  93</span>  <span class="k1">if</span><span class="k2">(</span> ioctlsocket<span class="k2">(</span>sListenSocket,FIONBIO,<span class="k3">&amp;</span>iNonBlocking<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> SOCKET_ERROR <span class="k2">)</span>
<span class="number">  94</span>  <span class="k2">{</span>
<span class="number">  95</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Error setting NON-BLOCKING mode!-&gt;%i\n"</span>,WSAGetLastError<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  96</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Shutdown started...\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  97</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Closing listening socket.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  98</span>    closesocket<span class="k2">(</span>sListenSocket<span class="k2">)</span><span class="k2">;</span>
<span class="number">  99</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Shutting down WinSock.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 100</span>    WSACleanup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 101</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Shut down.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 102</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Goodbye! :)\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 103</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 104</span>  <span class="k2">}</span>
<span class="number"> 105</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Setting listening socket option-&gt;Reuse address mode.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 106</span>  <span class="c">//if( ioctlsocket(sListenSocket,SO_REUSEADDR,&amp;iReuseAddress) == SOCKET_ERROR  )</span>
<span class="number"> 107</span>  <span class="k1">if</span><span class="k2">(</span> setsockopt<span class="k2">(</span>sListenSocket,SOL_SOCKET, SO_REUSEADDR, <span class="k3">&amp;</span>iReuseAddress,
<span class="number"> 108</span>    <span class="k1">sizeof</span><span class="k2">(</span>iReuseAddress<span class="k2">)</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> SOCKET_ERROR  <span class="k2">)</span>
<span class="number"> 109</span>  <span class="k2">{</span>
<span class="number"> 110</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Error setting SO_REUSEADDR mode!-&gt;%i\n"</span>,WSAGetLastError<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 111</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Shutdown started...\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 112</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Closing listening socket.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 113</span>    closesocket<span class="k2">(</span>sListenSocket<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 114</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Shutting down WinSock.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 115</span>    WSACleanup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 116</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Shut down.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 117</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Goodbye! :)\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 118</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 119</span>  <span class="k2">}</span>
<span class="number"> 120</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 121</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Attempt listen...\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 122</span>  <span class="k1">if</span> <span class="k2">(</span> listen<span class="k2">(</span>sListenSocket,<span class="n">5</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> SOCKET_ERROR <span class="k2">)</span>
<span class="number"> 123</span>  <span class="k2">{</span>
<span class="number"> 124</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Error listening!-&gt;%i\n"</span>,WSAGetLastError<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 125</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Shutdown started...\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 126</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Closing listening socket.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 127</span>    closesocket<span class="k2">(</span>sListenSocket<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 128</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Shutting down WinSock.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 129</span>    WSACleanup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 130</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Shut down.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 131</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Goodbye! :)\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 132</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 133</span>  <span class="k2">}</span>
<span class="number"> 134</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 135</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Allegro]-&gt;Initialize system.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 136</span>  <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 137</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Allegro]-&gt;Setting color depth.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 138</span>  <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">32</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 139</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Allegro]-&gt;Setting GFX mode.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 140</span>  <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_WINDOWED,<span class="n">400</span>,<span class="n">400</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 141</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Allegro]-&gt;Setting color conversion.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 142</span>  <a href="http://www.allegro.cc/manual/set_color_conversion" target="_blank"><span class="a">set_color_conversion</span></a><span class="k2">(</span>COLORCONV_TOTAL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 143</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Allegro]-&gt;Starting timer.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 144</span>  <a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 145</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Allegro]-&gt;Starting keyboard service.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 146</span>  <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 147</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Allegro]-&gt;Starting mouse service.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 148</span>  <a href="http://www.allegro.cc/manual/install_mouse" target="_blank"><span class="a">install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 149</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 150</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Allegro]-&gt;Setting color depth.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 151</span>  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>pBmp <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>,<a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 152</span>  <span class="k1">if</span> <span class="k2">(</span> <span class="k3">!</span>pBmp <span class="k2">)</span>
<span class="number"> 153</span>  <span class="k2">{</span>
<span class="number"> 154</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Allegro]-&gt;Error creating buffer!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 155</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Shutdown started...\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 156</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Closing listening socket.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 157</span>    closesocket<span class="k2">(</span>sListenSocket<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 158</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Shutting down WinSock.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 159</span>    WSACleanup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 160</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Shut down.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 161</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Goodbye! :)\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 162</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 163</span>  <span class="k2">}</span>
<span class="number"> 164</span>  <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>pBmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 165</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 166</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Enter main loop.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 167</span>  <span class="c">// SOCKET accept( SOCKET s, struct sockaddr FAR* addr,int FAR* addrlen );</span>
<span class="number"> 168</span>  <span class="k1">while</span> <span class="k2">(</span> <span class="k1">true</span> <span class="k2">)</span>
<span class="number"> 169</span>  <span class="k2">{</span>
<span class="number"> 170</span>    <span class="c">// [Network code]</span>
<span class="number"> 171</span>    FD_ZERO<span class="k2">(</span><span class="k3">&amp;</span>fdRead<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 172</span>    FD_ZERO<span class="k2">(</span><span class="k3">&amp;</span>fdWrite<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 173</span>    timeval tv <span class="k3">=</span> <span class="k2">{</span> <span class="n">0</span>, <span class="n">0</span> <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 174</span>    <span class="c">// check for connection attempts</span>
<span class="number"> 175</span>    sAcceptSocket <span class="k3">=</span> accept<span class="k2">(</span>sListenSocket,<span class="k2">(</span><span class="k1">struct</span> sockaddr<span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span>sRemoteAddress,
<span class="number"> 176</span>                         <span class="k3">&amp;</span>iRemoteAddressLength<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 177</span>    <span class="k1">if</span> <span class="k2">(</span> sAcceptSocket <span class="k3">=</span><span class="k3">=</span> INVALID_SOCKET <span class="k2">)</span>
<span class="number"> 178</span>    <span class="k2">{</span>
<span class="number"> 179</span>      <span class="k1">int</span> i <span class="k3">=</span> WSAGetLastError<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 180</span>      <span class="k1">if</span> <span class="k2">(</span> i <span class="k3">=</span><span class="k3">=</span> WSAEWOULDBLOCK <span class="k2">)</span>
<span class="number"> 181</span>      <span class="k2">{</span>
<span class="number"> 182</span>        <span class="c">//printf(" [Network]-&gt;Accept-&gt;Waiting for connections...\n");</span>
<span class="number"> 183</span>      <span class="k2">}</span>
<span class="number"> 184</span>      <span class="k1">else</span>
<span class="number"> 185</span>      <span class="k2">{</span>
<span class="number"> 186</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Accept-&gt;Error!-&gt;%i\n"</span>,i<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 187</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 188</span>      <span class="k2">}</span>
<span class="number"> 189</span>    <span class="k2">}</span>
<span class="number"> 190</span>    <span class="k1">else</span>
<span class="number"> 191</span>    <span class="k2">{</span>
<span class="number"> 192</span>      FD_SET<span class="k2">(</span>sAcceptSocket,<span class="k3">&amp;</span>fdRead<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 193</span>      FD_SET<span class="k2">(</span>sAcceptSocket,<span class="k3">&amp;</span>fdWrite<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 194</span>      <span class="k1">if</span> <span class="k2">(</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_688.html" target="_blank">select</a><span class="k2">(</span><span class="n">0</span>,<span class="k3">&amp;</span>fdRead,<span class="k3">&amp;</span>fdWrite,NULL,<span class="k3">&amp;</span>tv <span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> SOCKET_ERROR <span class="k2">)</span>
<span class="number"> 195</span>      <span class="k2">{</span>
<span class="number"> 196</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Select error!-&gt;%i\n"</span>,WSAGetLastError<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 197</span>      <span class="k2">}</span>
<span class="number"> 198</span>      <span class="k1">else</span>
<span class="number"> 199</span>      <span class="k2">{</span>
<span class="number"> 200</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Select-&gt;OK.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 201</span>      <span class="k2">}</span>
<span class="number"> 202</span>      <span class="k1">if</span> <span class="k2">(</span> FD_ISSET<span class="k2">(</span>sAcceptSocket,<span class="k3">&amp;</span>fdRead<span class="k2">)</span> <span class="k2">)</span>
<span class="number"> 203</span>      <span class="k2">{</span>
<span class="number"> 204</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span> <span class="s">" [Network]-&gt;&lt;Remote&gt;-&gt;Ready to receive data...\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 205</span>      <span class="k2">}</span>
<span class="number"> 206</span>      <span class="k1">if</span> <span class="k2">(</span> FD_ISSET<span class="k2">(</span>sAcceptSocket,<span class="k3">&amp;</span>fdWrite<span class="k2">)</span> <span class="k2">)</span>
<span class="number"> 207</span>      <span class="k2">{</span>
<span class="number"> 208</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span> <span class="s">" [Network]-&gt;&lt;Remote&gt;-&gt;Ready to send data...\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 209</span>        <span class="k1">char</span> <span class="k3">*</span>cBuffer <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 210</span>        DWORD dwTotalBytesReceived <span class="k3">=</span> recv<span class="k2">(</span>sAcceptSocket,cBuffer,BUFFERSIZE,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 211</span>        <span class="k1">if</span> <span class="k2">(</span> dwTotalBytesReceived <span class="k3">=</span><span class="k3">=</span> SOCKET_ERROR  <span class="k2">)</span>
<span class="number"> 212</span>        <span class="k2">{</span>
<span class="number"> 213</span>          <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Error receiving data!-&gt;%i\n"</span>,WSAGetLastError<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 214</span>        <span class="k2">}</span>
<span class="number"> 215</span>        <span class="k1">else</span>
<span class="number"> 216</span>        <span class="k2">{</span>
<span class="number"> 217</span>          <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;&lt;Remote&gt;-&gt;TotalSent-&gt;%i\n"</span>,dwTotalBytesReceived<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 218</span>          <span class="k1">if</span> <span class="k2">(</span> dwTotalBytesReceived <span class="k3">&gt;</span> <span class="n">0</span> <span class="k2">)</span>
<span class="number"> 219</span>          <span class="k2">{</span>
<span class="number"> 220</span>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;&lt;Remote&gt;-&gt;[Message]-&gt;%s\n"</span>,cBuffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 221</span>          <span class="k2">}</span>
<span class="number"> 222</span>        <span class="k2">}</span>
<span class="number"> 223</span>      <span class="k2">}</span>
<span class="number"> 224</span>      <span class="c">//FD_CLR(sAcceptSocket,&amp;fdRead);</span>
<span class="number"> 225</span>      <span class="c">//FD_CLR(sAcceptSocket,&amp;fdWrite);</span>
<span class="number"> 226</span>    <span class="k2">}</span>
<span class="number"> 227</span>    closesocket<span class="k2">(</span>sAcceptSocket<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 228</span>    <span class="c">// [Allegro code]</span>
<span class="number"> 229</span>    <span class="k1">if</span> <span class="k2">(</span> <a href="http://www.allegro.cc/manual/keypressed" target="_blank"><span class="a">keypressed</span></a><span class="k2">(</span><span class="k2">)</span> <span class="k2">)</span>
<span class="number"> 230</span>    <span class="k2">{</span>
<span class="number"> 231</span>      <span class="k1">if</span> <span class="k2">(</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span> <span class="k2">)</span>
<span class="number"> 232</span>      <span class="k2">{</span>
<span class="number"> 233</span>        <a href="http://www.allegro.cc/manual/clear_keybuf" target="_blank"><span class="a">clear_keybuf</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 234</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 235</span>      <span class="k2">}</span>
<span class="number"> 236</span>    <span class="k2">}</span>
<span class="number"> 237</span>    <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>pBmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 238</span>    textprintf<span class="k2">(</span>pBmp,<a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>,<span class="n">0</span>,SCREEN_H-text_height<span class="k2">(</span><a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a><span class="k2">)</span>,<a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span>,
<span class="number"> 239</span>             <span class="s">"Press ESC key to exit..."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 240</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>pBmp,<a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,pBmp-&gt;w,pBmp-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 241</span>  <span class="k2">}</span>
<span class="number"> 242</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Leaving main loop.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 243</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 244</span>  <span class="c">// [Cleanup]</span>
<span class="number"> 245</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Shutdown started...\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 246</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Allegro]-&gt;Cleanup objects.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 247</span>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>pBmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 248</span>  pBmp <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 249</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Closing listening socket.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 250</span>  closesocket<span class="k2">(</span>sListenSocket<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 251</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Closing remote socket.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 252</span>  closesocket<span class="k2">(</span>sAcceptSocket<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 253</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [Network]-&gt;Shutting down WinSock.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 254</span>  WSACleanup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 255</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" [System]-&gt;Shut down.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 256</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Goodbye! :)\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 257</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 258</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 259</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 260</span><span class="k2">}</span>
<span class="number"> 261</span><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span>
<span class="number"> 262</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
</div></div><p>
Sorry for the long code...the actual working code is not that much...it is mainly all the verbose error checking code I put in...</p><p>The client binary is attached....(win32)<br />or clicky:<br /><a href="http://64.246.37.217/files/attachment/590432">http://64.246.37.217/files/attachment/590432</a></p><p>The compiled server binary is attached also...(win32)<br />or clicky:<br /><a href="http://64.246.37.217/files/attachment/590433">http://64.246.37.217/files/attachment/590433</a></p><p>Thanks in advance,<br />Donald 8-)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Don Freeman)</author>
		<pubDate>Sun, 05 Nov 2006 22:53:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You use select to check whether you need to accept a new connection, or receive data. You are accepting when there is no need to do that. The code is complex because you did not do it in the standard way, were you using select to multiplex the information from the socket, it would be easier <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Sun, 05 Nov 2006 22:59:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Basically what you are saying is that I should use something like this:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k2">[</span>MAIN LOOP<span class="k2">]</span></td></tr><tr><td class="number">2</td><td>   <a href="http://www.delorie.com/djgpp/doc/libc/libc_688.html" target="_blank">select</a><span class="k2">(</span>...<span class="k2">)</span></td></tr><tr><td class="number">3</td><td>   <span class="k1">if</span> <span class="k2">(</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_688.html" target="_blank">select</a> tells me pending connection <span class="k2">)</span></td></tr><tr><td class="number">4</td><td>   <span class="k2">{</span></td></tr><tr><td class="number">5</td><td>      accept<span class="k2">(</span>...<span class="k2">)</span></td></tr><tr><td class="number">6</td><td>      <span class="k1">if</span> <span class="k2">(</span> accepted sock valid <span class="k2">)</span></td></tr><tr><td class="number">7</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">8</td><td>         process accepted socket</td></tr><tr><td class="number">9</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">10</td><td>      <span class="k1">else</span></td></tr><tr><td class="number">11</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">12</td><td>         socket was invalid</td></tr><tr><td class="number">13</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">14</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">15</td><td>   <span class="k1">do</span> other stuff</td></tr><tr><td class="number">16</td><td><span class="k2">[</span><span class="k3">/</span>MAIN LOOP<span class="k2">]</span></td></tr></tbody></table></div></div><p>

Pseudo code (of course)...::)</p><p>Only question:<br />How do I know when select will return the connection attempt? <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" /></p><p>Thanks for your quick response,<br />Donald
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Don Freeman)</author>
		<pubDate>Mon, 06 Nov 2006 00:04:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes. I will tell you to check <a href="http://www.allegro.cc/forums/thread/370013/370226#target">this</a> again. When the connection is attempted, FD_ISSET will return true when you check the socket where you are listening. If FD_ISSET returns true in a socket that has already been accepted, then you are going to receive information.</p><div class="source-code snippet"><div class="inner"><pre>    <span class="c">/*  check if the descriptor set is our listening one  */</span>
    <span class="k1">if</span> <span class="k2">(</span>FD_ISSET<span class="k2">(</span>descriptor , <span class="k3">&amp;</span>input<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
        sockets<span class="k2">[</span>sockets_index<span class="k2">]</span> <span class="k3">=</span> accept<span class="k2">(</span>descriptor, NULL, NULL<span class="k2">)</span><span class="k2">;</span>
        <span class="c">/*  more code about accepting  */</span>
    <span class="k2">}</span>
    <span class="c">/*  one of the sockets is sending data. Find it  */</span>
    <span class="k1">else</span> <span class="k2">{</span>
        <span class="c">/*  receive information from a socket  */</span>
    <span class="k2">}</span>
</pre></div></div><p>

Note that <i>descriptor</i> is the socket at which you did <i>listen</i>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Mon, 06 Nov 2006 00:08:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok...Thanks man! It just gets frustrating after awhile...I didn&#39;t want to ask for help, but it looks like I needed to anyway... <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" /></p><p>The FD_xx is what was confusing for me... My docs are kind of hard to follow about how to use them correctly...</p><p>Thanks again,<br />Donald
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Don Freeman)</author>
		<pubDate>Mon, 06 Nov 2006 00:14:34 +0000</pubDate>
	</item>
</rss>
