<div>Hi,</div>
<div>&nbsp;</div>
<div>As a newbie, I am wondering how to use ENet for peer-to-peer communiation, instead of just client/server?</div>
<div>can anyone kindly post a peer-to-peer model code snippet made&nbsp;by ENet? like, the following is the test I made according to the tutorial, but, how to organize it for a peer-to-peer mode?</div>
<div>&nbsp;</div>
<div>thanks</div>
<div>--------------------</div>
<div><br>
<p>#include &lt;stdio.h&gt;<br>#include &quot;enet/enet.h&quot;</p>
<p>bool Bs2s =false;<br>class EnetSrv<br>{<br>public:<br>&nbsp;EnetSrv()<br>&nbsp;{<br>&nbsp;&nbsp;_psrvenet = 0;<br>&nbsp;&nbsp;enet_initialize ();<br>&nbsp;&nbsp;<br>&nbsp;}<br>&nbsp;<br>&nbsp;~EnetSrv()<br>&nbsp;{<br>&nbsp;&nbsp;if(_psrvenet)<br>&nbsp;&nbsp;&nbsp;enet_host_destroy(_psrvenet);<br>&nbsp;&nbsp;&nbsp;enet_deinitialize();
<br>&nbsp;}<br>&nbsp;<br>&nbsp;bool Start(char* host,int port)<br>&nbsp;{<br>&nbsp;&nbsp;ENetAddress address;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;enet_address_set_host (&amp; address, host); <br>&nbsp;&nbsp;address.port = port;<br>&nbsp;&nbsp;_psrvenet = enet_host_create (&amp; address /* the address to bind the server host to */, 
<br>&nbsp;&nbsp;&nbsp;32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* allow up to 32 clienets and/or outgoing connections */,<br>&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* assume any amount of incoming bandwidth */,<br>&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* assume any amount of outgoing bandwidth */);<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;return _psrvenet!=0;
<br>&nbsp;}<br>&nbsp;<br>&nbsp;void Subscribe()<br>&nbsp;{<br>&nbsp;&nbsp;ENetEvent event;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;// Wait up to 1000 milliseconds for an event. <br>&nbsp;&nbsp;bool kup=true;<br>&nbsp;&nbsp;while(kup)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;printf(&quot;.&quot;);<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;while (enet_host_service (_psrvenet, &amp;event, 500) &gt; 0)
<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;switch (event.type)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;case ENET_EVENT_TYPE_CONNECT:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf (&quot;A new _pclienet connected from %x:%u.\n&quot;, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.peer -&gt; address.host,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.peer -&gt; address.port
);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Store any relevant _pclienet information here. */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.peer -&gt; data = &quot;_pclienet information&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;case ENET_EVENT_TYPE_RECEIVE:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf (&quot;A packet of length %u containing %s was received from %s on channel %u.\n&quot;,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.packet -&gt; dataLength,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.packet -&gt; data,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.peer -&gt;data,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.channelID);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Clean up the packet now that we're done using it. */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//send back data
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ENetPacket * packet = enet_packet_create (event.packet -&gt; data, event.packet -&gt; dataLength + 1, ENET_PACKET_FLAG_RELIABLE);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Send the packet to the peer over channel id 3. */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* One could also broadcast the packet by&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enet_host_broadcast (_psrvenet, 1, packet);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//enet_peer_send (event.peer, 3, packet);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enet_host_flush (_psrvenet);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enet_packet_destroy (event.packet);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>
&nbsp;&nbsp;&nbsp;&nbsp;case ENET_EVENT_TYPE_DISCONNECT:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf (&quot;%s disconected.\n&quot;, event.peer -&gt;data);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Reset the peer's _pclienet information. */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.peer -&gt; data = NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;}
<br>&nbsp;}<br>&nbsp;<br>&nbsp;ENetHost * _psrvenet;<br>};</p>
<p><br>class EnetCli<br>{<br>public:&nbsp;&nbsp;&nbsp; <br>&nbsp;EnetCli()<br>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;enet_initialize ();&nbsp;&nbsp;&nbsp; <br>&nbsp;}&nbsp;&nbsp;&nbsp; <br>&nbsp;<br>&nbsp;~EnetCli()<br>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;if(_pclienet)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;enet_host_destroy(_pclienet);<br>&nbsp;&nbsp;enet_deinitialize();
<br>&nbsp;}<br>&nbsp;<br>&nbsp;bool Create()&nbsp;&nbsp;&nbsp; <br>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;_pclienet = enet_host_create (NULL /* create a _pclienet host */,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;1 /* only allow 1 outgoing connection */,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;576000 / 8 /* 56K modem with 56 Kbps downstream bandwidth */,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp;144000 / 8 /* 56K modem with 14 Kbps upstream bandwidth */);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;if (_pclienet == NULL)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;fprintf (stderr, &quot;An error occurred while trying to create an ENet _pclienet host.\n&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;return _pclienet!=0;&nbsp;&nbsp;&nbsp; <br>&nbsp;}&nbsp;&nbsp;&nbsp; <br>&nbsp;void Disconnect()&nbsp;&nbsp;&nbsp; <br>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;enet_peer_disconnect (&amp; _pclienet -&gt; peers [0]);&nbsp;&nbsp;&nbsp; <br>&nbsp;}&nbsp;&nbsp;&nbsp; <br>&nbsp;<br>&nbsp;bool Connect(char* ip, int port)&nbsp;&nbsp;&nbsp; <br>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;ENetAddress address;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;ENetEvent&nbsp;&nbsp; event;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;<br>&nbsp;&nbsp;/* Connect to <a href="http://some.server.net:1234">some.server.net:1234</a>. */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;enet_address_set_host (&amp; address, ip);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;address.port = port;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Initiate the connection, allocating the two channels 0 and 1. */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;_peer = enet_host_connect (_pclienet, &amp; address, 2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;<br>&nbsp;&nbsp;if (_peer == NULL)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;fprintf (stderr, &quot;No available peers for initiating an ENet connection.\n&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;return false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Wait up to 5 seconds for the connection attempt to succeed.*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;if (enet_host_service (_pclienet, &amp; event, 5000) &gt; 0 &amp;&amp; <br>&nbsp;&nbsp;&nbsp;event.type == ENET_EVENT_TYPE_CONNECT)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;puts(&quot;Connection to succeeded.&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;return true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;/* Either the 5 seconds are up or a disconnect event was */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;/* received. Reset the _peer in the event the 5 seconds&nbsp;&nbsp; */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp;/* had run out without any significant event.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;enet_peer_reset (_peer);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;puts (&quot;Connection failed.&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;return false;&nbsp;&nbsp;&nbsp; <br>&nbsp;}&nbsp;&nbsp;&nbsp; 
<br>&nbsp;<br>&nbsp;void Subscribe()&nbsp;&nbsp;&nbsp; <br>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;ENetEvent event;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;int loops = 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;<br>&nbsp;&nbsp;while(1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;while (enet_host_service (_pclienet, &amp; event, 20) &gt; 0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;switch (event.type)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;case ENET_EVENT_TYPE_RECEIVE:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf (&quot;A packet of length %u containing %s was received from %s on channel %u.\n&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.packet -&gt; dataLength,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.packet -&gt; data,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.peer -&gt; data,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.channelID);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Clean up the packet now that we're done using it. */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enet_packet_destroy (event.packet);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp;&nbsp;case ENET_EVENT_TYPE_DISCONNECT:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts (&quot;Disconnection succeeded.&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;} //send back data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;if(Bs2s)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enet_host_flush (_pclienet);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ENetPacket * packet = enet_packet_create (&quot;packet&quot;, 1024, ENET_PACKET_FLAG_RELIABLE);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enet_peer_send (_peer, 1, packet);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;Disconnect();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;enet_peer_reset (&amp; _pclienet -&gt; peers [0]);&nbsp;&nbsp;&nbsp; <br>&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;
<br>&nbsp;ENetPeer*&nbsp;&nbsp; _peer;&nbsp;&nbsp;&nbsp; <br>&nbsp;ENetHost * _pclienet;<br>};</p>
<p>void&nbsp;&nbsp;&nbsp; RunServer()<br>{&nbsp;&nbsp;&nbsp; <br>&nbsp;EnetSrv s;&nbsp;&nbsp;&nbsp; <br>&nbsp;if(s.Start(&quot;<a href="http://127.0.0.1">127.0.0.1</a>&quot;,1234))&nbsp;&nbsp;&nbsp; <br>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;s.Subscribe();&nbsp;&nbsp;&nbsp; <br>&nbsp;}<br>}</p>
<p>void&nbsp;&nbsp;&nbsp; RunClient()<br>{&nbsp;&nbsp;&nbsp; <br>&nbsp;EnetCli c;&nbsp;&nbsp;&nbsp; <br>&nbsp;if(c.Create())&nbsp;&nbsp;&nbsp; <br>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;if(c.Connect(&quot;<a href="http://127.0.0.1">127.0.0.1</a>&quot;,1234))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;c.Subscribe();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp; <br>&nbsp;}<br>}</p>
<p>int main(int argc, char* argv[])<br>{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;if(argc==2)&nbsp;&nbsp;&nbsp; <br>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;if(!strcmp(argv[1],&quot;/s&quot;))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;RunServer();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;if(!strcmp(argv[1],&quot;/cs&quot;))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp;&nbsp;Bs2s=true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;RunClient();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp; <br>&nbsp;}&nbsp;<br>&nbsp;<br>&nbsp;return 0;<br>}</p><br>&nbsp;</div>