title: C/Linux TCP Socket Server
body: <p>I'm implementing a TCP socket server in C and Linux. It will be a chat server handling many requests simultaneously. Here is the pseudo code for how it is setup</p>
  
  <pre><code>create a socket
  bind to a well-known port
  use listen to place in passive mode
  while (1)
  {
      accept a client connection
      fork
      if (child)
      {
          communicate with new socket
          close new socket
          exit
       }
   else
   {close new socket}
  }
  </code></pre>
  
  <p>From what I've seen, the "communicate with new socket" part consists of reading the buffer and then possibly writing to the buffer, then the socket closes. I thought sockets were suppose to be a persistent connection? If the client has to reconnect every time it wants to send more data to the server, isn't this inefficient and defeating the purpose of sockets?</p>