<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>connect: Transport endpoint is already connected</title>
		<link>http://www.allegro.cc/forums/view/412271</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 28 Sep 2004 02:24:43 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Here&#39;s the code:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>isconnected<span class="k2">)</span><span class="k2">{</span>
        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Connecting to %s\n"</span>,inet_ntoa<span class="k2">(</span>outlink_addr.sin_addr<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
              <span class="k1">if</span> <span class="k2">(</span>connect<span class="k2">(</span>outsock, <span class="k2">(</span><span class="k1">struct</span> sockaddr <span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span>outlink_addr,<span class="k1">sizeof</span><span class="k2">(</span><span class="k1">struct</span> sockaddr<span class="k2">)</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span> <span class="k2">{</span>
          <a href="http://www.delorie.com/djgpp/doc/libc/libc_615.html" target="_blank">perror</a><span class="k2">(</span><span class="s">"connect"</span><span class="k2">)</span><span class="k2">;</span>
          <span class="c">//close(outsock);  </span>
          <span class="c">//exit(1);</span>
        <span class="k2">}</span><span class="k1">else</span><span class="k2">{</span>
          <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Connected to %s (%d)\n"</span>,inet_ntoa<span class="k2">(</span>outlink_addr.sin_addr<span class="k2">)</span>,outsock<span class="k2">)</span><span class="k2">;</span>
          FD_SET<span class="k2">(</span>outsock, <span class="k3">&amp;</span>master<span class="k2">)</span><span class="k2">;</span> <span class="c">// add to master set</span>
          <span class="k1">if</span> <span class="k2">(</span>outsock <span class="k3">&gt;</span> fdmax<span class="k2">)</span> <span class="k2">{</span>    <span class="c">// keep track of the maximum</span>
            outsock <span class="k3">=</span> newfd<span class="k2">;</span>
          <span class="k2">}</span>
          isconnected <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
        <span class="k2">}</span>
      <span class="k2">}</span>
</pre></div></div><p>
And the output:
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Unreal2Hybrid: new connection from 192.168.0.2 on socket 4<br />Connecting to 63.110.124.45<br />connect: Transport endpoint is already connected
</p></div></div><p>

I can&#39;t figure out why it can&#39;t reconnect (it connects once, and only once, do I need to reset the struct or something?).</p><p>And yes, this is using select, a modified select thingy from Beej.  If you want I can post the entire code...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cody Harris)</author>
		<pubDate>Tue, 28 Sep 2004 01:03:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Theres a nice option called something like: SO_REUSEADDR.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Tue, 28 Sep 2004 01:07:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Most probably the problem is in the bind, not the connect.</p><p>It is an operative system issue. If you don&#39;t close the socket correctly (in example, press CTRL-C to end the program), the port is never freed. In Linux there used to be a delay of around 30 seconds-1 minute until the OS freed the socket and you were able to bind it again.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Tue, 28 Sep 2004 01:07:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Adding 
</p><div class="source-code snippet"><div class="inner"><pre>        <span class="k1">if</span> <span class="k2">(</span>setsockopt<span class="k2">(</span>outsock, SOL_SOCKET, SO_REUSEADDR, <span class="k3">&amp;</span>yes, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span> <span class="k2">{</span>
            <a href="http://www.delorie.com/djgpp/doc/libc/libc_615.html" target="_blank">perror</a><span class="k2">(</span><span class="s">"setsockopt"</span><span class="k2">)</span><span class="k2">;</span>
            <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
        <span class="k2">}</span>
</pre></div></div><p>
didn&#39;t work, it still complains...  Do I have to reset the struct or something...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cody Harris)</author>
		<pubDate>Tue, 28 Sep 2004 01:21:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Heres a little function I found and modified:
</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="k1">int</span> make_socket <span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">short</span> port<span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>   <span class="k1">int</span> sock, yes <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td>   <span class="k1">struct</span> sockaddr_in name<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td>   <span class="c">/* Create the socket. */</span></td></tr><tr><td class="number">7</td><td>   sock <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></td></tr><tr><td class="number">8</td><td>   <span class="k1">if</span> <span class="k2">(</span>sock <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">9</td><td>      <span class="c">/*char *buf = calloc(1, 256);</span></td></tr><tr><td class="number">10</td><td><span class="c">      if(!buf)</span></td></tr><tr><td class="number">11</td><td><span class="c">         exit (EXIT_FAILURE);</span></td></tr><tr><td class="number">12</td><td><span class="c">      */</span></td></tr><tr><td class="number">13</td><td>      log_printf<span class="k2">(</span>global_log, LOG_LEVEL_FATAL, <span class="s">"socket: failed..."</span><span class="c">/*, strerror_r(errno, buf, 256)*/</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>      <span class="c">//free(buf);</span></td></tr><tr><td class="number">15</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a> <span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">17</td><td>   <span class="k1">if</span> <span class="k2">(</span>setsockopt<span class="k2">(</span>sock,SOL_SOCKET,SO_REUSEADDR,<span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span>yes,<span class="k1">sizeof</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">18</td><td>      <span class="c">/*char *buf = calloc(1, 256);</span></td></tr><tr><td class="number">19</td><td><span class="c">      if(!buf)</span></td></tr><tr><td class="number">20</td><td><span class="c">         exit (EXIT_FAILURE);</span></td></tr><tr><td class="number">21</td><td><span class="c">      */</span></td></tr><tr><td class="number">22</td><td>      log_printf<span class="k2">(</span>global_log, LOG_LEVEL_FATAL, <span class="s">"setsockopt: failed..."</span><span class="c">/*, strerror_r(errno, buf, 256)*/</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>      <span class="c">//free(buf);</span></td></tr><tr><td class="number">24</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a> <span class="k2">(</span>EXIT_FAILURE<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>&#160;</td></tr><tr><td class="number">27</td><td>   <span class="c">/* Give the socket a name. */</span></td></tr><tr><td class="number">28</td><td>   name.sin_family <span class="k3">=</span> AF_INET<span class="k2">;</span></td></tr><tr><td class="number">29</td><td>   name.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">30</td><td>   name.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></td></tr><tr><td class="number">31</td><td>   <span class="k1">if</span> <span class="k2">(</span>bind <span class="k2">(</span>sock, <span class="k2">(</span><span class="k1">struct</span> sockaddr <span class="k3">*</span><span class="k2">)</span> <span class="k3">&amp;</span>name, <span class="k1">sizeof</span> <span class="k2">(</span>name<span class="k2">)</span><span class="k2">)</span> <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">32</td><td>      <span class="k1">char</span> <span class="k3">*</span>buf <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_81.html" target="_blank">calloc</a><span class="k2">(</span><span class="n">1</span>, <span class="n">256</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>      <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>buf<span class="k2">)</span></td></tr><tr><td class="number">34</td><td>         <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a> <span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td>&#160;</td></tr><tr><td class="number">36</td><td>      log_printf<span class="k2">(</span>global_log, LOG_LEVEL_FATAL, <span class="s">"bind: failed..."</span><span class="c">/*, strerror_r(errno, buf, 256)*/</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>      <span class="c">//free(buf);</span></td></tr><tr><td class="number">38</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a> <span class="k2">(</span>EXIT_FAILURE<span class="k2">)</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>&#160;</td></tr><tr><td class="number">41</td><td>   log_printf<span class="k2">(</span>global_log, LOG_LEVEL_NOTE, <span class="s">"Succsessfully bound to port: %i"</span>, port<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">42</td><td>&#160;</td></tr><tr><td class="number">43</td><td>   <span class="k1">return</span> sock<span class="k2">;</span></td></tr><tr><td class="number">44</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

The log_* functions are mine, not libc or anything... Oh, and note, this is for a server style port IIRC.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Tue, 28 Sep 2004 01:25:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>How is the server code? It is listening for more connections?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Tue, 28 Sep 2004 01:26:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The server listens for connections, and if it find that when a client connects that it&#39;s not connected to another server, then it connects to it...</p><p>I want it to reconnect to that socket if the connection is lost.</p><p>EDIT: Why do you have to bind when connecting to something else?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cody Harris)</author>
		<pubDate>Tue, 28 Sep 2004 01:30:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The code is old, you don&#39;t want to open a new port everytime you connect to something <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>You should show the server code, though. The client should not have problem no matter how many they are.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Tue, 28 Sep 2004 01:34:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I edited it so that it recalled the socket thingy...
</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="k1">if</span> <span class="k2">(</span><span class="k3">!</span>isconnected<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">2</td><td>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Connecting to %s (cached)\n"</span>,inet_ntoa<span class="k2">(</span>outlink_addr.sin_addr<span class="k2">)</span><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>connect<span class="k2">(</span>outsock, <span class="k2">(</span><span class="k1">struct</span> sockaddr <span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span>outlink_addr,<span class="k1">sizeof</span><span class="k2">(</span><span class="k1">struct</span> sockaddr<span class="k2">)</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">4</td><td>          <a href="http://www.delorie.com/djgpp/doc/libc/libc_615.html" target="_blank">perror</a><span class="k2">(</span><span class="s">"connect"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>          <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>outlink<span class="k3">=</span>gethostbyname<span class="k2">(</span><span class="s">"palace.morphforest.com"</span><span class="k2">)</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">6</td><td>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_615.html" target="_blank">perror</a><span class="k2">(</span><span class="s">"gethostbyname"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">1</span><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>          <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>outsock <span class="k3">=</span> socket<span class="k2">(</span>AF_INET, SOCK_STREAM, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">10</td><td>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_615.html" target="_blank">perror</a><span class="k2">(</span><span class="s">"socket"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>          <span class="k2">}</span></td></tr><tr><td class="number">13</td><td>          outlink_addr.sin_family <span class="k3">=</span> AF_INET<span class="k2">;</span>    <span class="c">// host byte order </span></td></tr><tr><td class="number">14</td><td>          outlink_addr.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><span class="n">7029</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">// short, network byte order </span></td></tr><tr><td class="number">15</td><td>          outlink_addr.sin_addr <span class="k3">=</span> <span class="k3">*</span><span class="k2">(</span><span class="k2">(</span><span class="k1">struct</span> in_addr <span class="k3">*</span><span class="k2">)</span>outlink-&gt;h_addr<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>          <a href="http://www.delorie.com/djgpp/doc/libc/libc_569.html" target="_blank">memset</a><span class="k2">(</span><span class="k3">&amp;</span><span class="k2">(</span>outlink_addr.sin_zero<span class="k2">)</span>, <span class="s">'\0'</span>, <span class="n">8</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">// zero the rest of the</span></td></tr><tr><td class="number">17</td><td>&#160;</td></tr><tr><td class="number">18</td><td>          <span class="c">// lose the pesky "address already in use" error message</span></td></tr><tr><td class="number">19</td><td>          <span class="k1">if</span> <span class="k2">(</span>setsockopt<span class="k2">(</span>outsock, SOL_SOCKET, SO_REUSEADDR, <span class="k3">&amp;</span>yes, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">20</td><td>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_615.html" target="_blank">perror</a><span class="k2">(</span><span class="s">"setsockopt"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">1</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>          <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Connecting to %s (last attempt)\n"</span>,inet_ntoa<span class="k2">(</span>outlink_addr.sin_addr<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>          <span class="k1">if</span> <span class="k2">(</span>connect<span class="k2">(</span>outsock, <span class="k2">(</span><span class="k1">struct</span> sockaddr <span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span>outlink_addr,<span class="k1">sizeof</span><span class="k2">(</span><span class="k1">struct</span> sockaddr<span class="k2">)</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">25</td><td>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_615.html" target="_blank">perror</a><span class="k2">(</span><span class="s">"connect"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>          <span class="k2">}</span><span class="k1">else</span><span class="k2">{</span></td></tr><tr><td class="number">28</td><td>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Connected to %s (%d)\n"</span>,inet_ntoa<span class="k2">(</span>outlink_addr.sin_addr<span class="k2">)</span>,outsock<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>            FD_SET<span class="k2">(</span>outsock, <span class="k3">&amp;</span>master<span class="k2">)</span><span class="k2">;</span> <span class="c">// add to master set</span></td></tr><tr><td class="number">30</td><td>            <span class="k1">if</span> <span class="k2">(</span>outsock <span class="k3">&gt;</span> fdmax<span class="k2">)</span> <span class="k2">{</span>    <span class="c">// keep track of the maximum</span></td></tr><tr><td class="number">31</td><td>              outsock <span class="k3">=</span> newfd<span class="k2">;</span></td></tr><tr><td class="number">32</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">33</td><td>            isconnected <span class="k3">=</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>          <span class="c">//close(outsock);  </span></td></tr><tr><td class="number">36</td><td>          <span class="c">//exit(1);</span></td></tr><tr><td class="number">37</td><td>        <span class="k2">}</span><span class="k1">else</span><span class="k2">{</span></td></tr><tr><td class="number">38</td><td>          <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Connected to %s (%d)\n"</span>,inet_ntoa<span class="k2">(</span>outlink_addr.sin_addr<span class="k2">)</span>,outsock<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>          FD_SET<span class="k2">(</span>outsock, <span class="k3">&amp;</span>master<span class="k2">)</span><span class="k2">;</span> <span class="c">// add to master set</span></td></tr><tr><td class="number">40</td><td>          <span class="k1">if</span> <span class="k2">(</span>outsock <span class="k3">&gt;</span> fdmax<span class="k2">)</span> <span class="k2">{</span>    <span class="c">// keep track of the maximum</span></td></tr><tr><td class="number">41</td><td>            outsock <span class="k3">=</span> newfd<span class="k2">;</span></td></tr><tr><td class="number">42</td><td>          <span class="k2">}</span></td></tr><tr><td class="number">43</td><td>          isconnected <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">45</td><td>      <span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cody Harris)</author>
		<pubDate>Tue, 28 Sep 2004 01:55:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hmm... close the old socket before creating a new one. And you meant reusing a socket to connect? Ah... I misunderstood, sorry.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Tue, 28 Sep 2004 02:03:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The old one is automatically closed on error or disconnect.</p><p>This seems to work though.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cody Harris)</author>
		<pubDate>Tue, 28 Sep 2004 02:10:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hmm... really? It frees the descriptor? Geez... it must have changed since the last time I did some real network programming then...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Tue, 28 Sep 2004 02:14:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yeah, it reuses file descriptors, the lowest one free (hense if you close stout and open a new file, all stout will go to the file...</p><p>That&#39;s the logic between piping stout, you close it then you ddup it or whatever...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cody Harris)</author>
		<pubDate>Tue, 28 Sep 2004 02:24:43 +0000</pubDate>
	</item>
</rss>
