<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Learning Network Programming</title>
		<link>http://www.allegro.cc/forums/view/594708</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 11 Jan 2008 03:22:33 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Could anyone point me in the direction of some easy to understand networking tutorials?  My goal is to implement a simple pong clone in C++ that could be played over a LAN.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Fay)</author>
		<pubDate>Thu, 10 Jan 2008 21:44:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><a href="http://beej.us/guide/bgnet/">Beej&#39;s Guide to Network Programming</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Thu, 10 Jan 2008 21:58:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>udp protocol for a real time app ( it means that you dont verify that the packet arrived, and so you have a real time app, with not so much delay)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (karistouf)</author>
		<pubDate>Thu, 10 Jan 2008 22:03:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>These day it does now matter if you use UDP or TCP. <br />Also, there is a TCP setting for disabling packet ack before new sending. It&#39;s TCP_NODELAY option who disable the naggle algorythm.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Thu, 10 Jan 2008 22:56:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This are very basic example of UDP.;D<br />Basic but it works....<br /><img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /><img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /><img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /><img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /></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="c">//////////////////CLIENT////////////////////////////////////////////////////////</span></td></tr><tr><td class="number">2</td><td><span class="k1">int</span> init_client_and_send_packet<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">3</td><td><span class="k2">{</span></td></tr><tr><td class="number">4</td><td>WSADATA wsa<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>WSAStartup<span class="k2">(</span>MAKEWORD<span class="k2">(</span><span class="n">2</span>,<span class="n">0</span><span class="k2">)</span>,<span class="k3">&amp;</span>wsa<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>SOCKADDR_IN <a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td><span class="c">//define structure</span></td></tr><tr><td class="number">9</td><td>sin.sin_family<span class="k3">=</span>AF_INET<span class="k2">;</span></td></tr><tr><td class="number">10</td><td>sin.sin_addr.s_addr<span class="k3">=</span>inet_addr<span class="k2">(</span>ip<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>sin.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>port<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td><span class="c">//prepare invoice</span></td></tr><tr><td class="number">13</td><td>sock<span class="k3">=</span>socket<span class="k2">(</span>AF_INET,SOCK_DGRAM,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//init socket with SOCK_DGRAM (thats say we send in UDP)</span></td></tr><tr><td class="number">14</td><td>bind<span class="k2">(</span>sock,<span class="k2">(</span>SOCKADDR<span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a>,<span class="k1">sizeof</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//structure to socket</span></td></tr><tr><td class="number">15</td><td>sinsize<span class="k3">=</span><span class="k1">sizeof</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td><span class="c">//init of our array buffer[]</span></td></tr><tr><td class="number">18</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_569.html" target="_blank">memset</a><span class="k2">(</span>trace_udp,<span class="n">0</span>,<span class="k1">sizeof</span><span class="k2">(</span>trace_udp<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td><span class="c">//we do the invoice</span></td></tr><tr><td class="number">20</td><td>nbrbytessended<span class="k3">=</span>sendto<span class="k2">(</span>sock,udp_buffer,<span class="k1">sizeof</span><span class="k2">(</span>udp_buffer<span class="k2">)</span>,<span class="n">0</span>,<span class="k2">(</span>SOCKADDR<span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a>,sinsize<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td><span class="k1">return</span><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">22</td><td><span class="k2">}</span></td></tr><tr><td class="number">23</td><td>&#160;</td></tr><tr><td class="number">24</td><td><span class="k1">int</span> close_client<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">25</td><td><span class="k2">{</span></td></tr><tr><td class="number">26</td><td>   shutdown<span class="k2">(</span>sock,<span class="n">2</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>    closesocket<span class="k2">(</span>sock<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td> <span class="k1">return</span><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">29</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>


</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="c">/*************** RECEIVER****************/</span></td></tr><tr><td class="number">2</td><td><span class="p">#include&lt;stdio.h&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include&lt;winsock2.h&gt;</span></td></tr><tr><td class="number">4</td><td><span class="p">#pragma comment(lib,"ws2_32.lib")</span></td></tr><tr><td class="number">5</td><td><span class="p">#define NBMAX_CAR 10</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">8</td><td><span class="k2">{</span></td></tr><tr><td class="number">9</td><td>WSADATA wsa<span class="k2">;</span></td></tr><tr><td class="number">10</td><td>WSAStartup<span class="k2">(</span>MAKEWORD<span class="k2">(</span><span class="n">2</span>,<span class="n">0</span><span class="k2">)</span>,<span class="k3">&amp;</span>wsa<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td>SOCKET sock<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>SOCKADDR_IN <a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td>&#160;</td></tr><tr><td class="number">16</td><td><span class="c">//Variables</span></td></tr><tr><td class="number">17</td><td><span class="k1">int</span> port <span class="k3">=</span> <span class="n">11060</span><span class="k2">;</span> <span class="c">//Ne pas init. si demande au user.</span></td></tr><tr><td class="number">18</td><td><span class="k1">char</span> buffer<span class="k2">[</span>NBMAX_CAR<span class="k2">]</span><span class="k2">;</span><span class="c">//Pour stocker les packets à envoyer</span></td></tr><tr><td class="number">19</td><td><span class="k1">int</span> bytesreceived<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>&#160;</td></tr><tr><td class="number">21</td><td><span class="c">//building structure</span></td></tr><tr><td class="number">22</td><td>sin.sin_family<span class="k3">=</span>AF_INET<span class="k2">;</span></td></tr><tr><td class="number">23</td><td>sin.sin_addr.s_addr<span class="k3">=</span>INADDR_ANY<span class="k2">;</span></td></tr><tr><td class="number">24</td><td>sin.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>port<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>&#160;</td></tr><tr><td class="number">26</td><td><span class="c">//init socket with SOCK_DGRAM (thats say we send in UDP)</span></td></tr><tr><td class="number">27</td><td>sock<span class="k3">=</span>socket<span class="k2">(</span>AF_INET,SOCK_DGRAM,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>&#160;</td></tr><tr><td class="number">29</td><td><span class="c">//set active socket to structure</span></td></tr><tr><td class="number">30</td><td>bind<span class="k2">(</span>sock,<span class="k2">(</span>SOCKADDR<span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a>,<span class="k1">sizeof</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td><span class="k1">int</span> sinsize<span class="k3">=</span><span class="k1">sizeof</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td><span class="k1">int</span> i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td><span class="k1">while</span><span class="k2">(</span><span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">34</td><td><span class="k2">{</span></td></tr><tr><td class="number">35</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_569.html" target="_blank">memset</a><span class="k2">(</span>buffer,<span class="n">0</span>,<span class="k1">sizeof</span><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>bytesreceived<span class="k3">=</span>recvfrom<span class="k2">(</span>sock,buffer,<span class="k1">sizeof</span><span class="k2">(</span>buffer<span class="k2">)</span>,<span class="n">0</span>,<span class="k2">(</span>SOCKADDR<span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a>,<span class="k3">&amp;</span>sinsize<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>&#160;</td></tr><tr><td class="number">38</td><td>i<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td><span class="k2">}</span></td></tr><tr><td class="number">40</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (karistouf)</author>
		<pubDate>Fri, 11 Jan 2008 03:22:33 +0000</pubDate>
	</item>
</rss>
