title: LuaSocket TCP client can receive messages from server, but not vice versa
body: <p>My client receives every message from the server just fine after connecting, but the server's output is always this:</p>
  
  <pre><code>Client #1 connected.
  first packet error: timeout
  Looping client #1
  message error: timeout
  Looping client #1
  message error: timeout
  Looping client #1
  message error: timeout
  ...etc...
  </code></pre>
  
  <p>I've messed around with some values on each side. It usually does nothing, but sometimes when messing with the server's timeout values it makes it so the server just hangs forever on client:send() or client:receive(). I can never get it so that both of them can exchange messages with eachother. Why?</p>
  
  <p>My goal is to have a client and server that spend minimal time (&lt;2-3ms) every loop so that I can spend a lot of time doing other things (this was part of a bigger program but I isolated it for easier testing of the issue) on both the client or server. I can't afford to have long, blocking calls so I set the timeout really low.</p>
  
  <p>Server source:</p>
  
  <pre><code>socket = require("socket");
  server = assert(socket.bind("*", 534));
  ip, port = server:getsockname();
  server:settimeout(0.03);
  
  nClients = 0;
  clients = {};
  
  print("Server started.");
  
  while true do
      local client, err = server:accept();
  
      if (not err) then
          nClients = nClients + 1;
          print("Client #"..nClients.." connected.");
  
          clients[nClients] = client;
          clients[nClients]:settimeout(0.03);
          clients[nClients]:send("test");
  
          local msg, err = clients[nClients]:receive();
          if (not err) then
              print("we got it");
          else
              print("first packet error: "..err);
          end
      end
  
      for i=1,nClients do
          if (clients[i] ~= nil) then
              print("Looping client #"..i);
  
              local msg, err = clients[i]:receive();
              if (not err) then
                  print("message received: "..msg);
              else
                  print("message error: "..err);
              end
  
              clients[nClients]:send("another message");
          end
      end
  
      socket.sleep(0.01);
  end
  </code></pre>
  
  <p>Client source:</p>
  
  <pre><code>socket = require("socket");
  tcp = assert(socket.tcp());
  ip, port = "127.0.0.1", 534;
  
  print("Client started.");
  
  tcp:settimeout(0.03);
  
  tcp:connect(ip, port);
  
  while true do
      local a, b, msg = tcp:receive();
  
      if (msg and #msg &gt; 1) then
          print("message received: "..msg);
      end
  
      tcp:send("message");
  
      socket.sleep(0.01);
  end
  </code></pre>