title: How to check a socket is closed or not in luasocket library?
body: <p>I am writing a server using Lua programming language, and the network layer is based on <a href="http://w3.impa.br/~diego/software/luasocket/home.html">LuaSocket</a>. </p>
  
  <p>And I cannot find any method to detect a socket is closed or not in its reference manual except by just try to read data from it(it will return nil and string 'close' when calling that).</p>
  
  <p>My code looks like this:</p>
  
  <pre><code>local socket = require 'socket'
  local server = socket.tcp()
  local port = 9527
  
  server:bind('*', port)
  local status, errorMessage = server:listen()
  if status == 1 then
      printf('Server is launched successfully on port %u', port)
  else
      printf('Server listen failed, error message is %s', errorMessage)
      return
  end
  
  local sockets = {server}
  
  while true do
      local results = socket.select(sockets)
      for _, sock in ipairs(results) do
          if sock == server then
              local s = server:accept()
  
              callback('Connected', s)
              table.insert(sockets, s)
  
              printf('%s connected', s:getsockname())
          else
              -- trying to detect socket is closed
              if sock:isClosed() then
                  callback('Disconnected', sock)
  
                  for i, s in ipairs(sockets) do
                      if s == sock then
                          table.remove(sockets, i)
                          break
                      end
                  end
  
                  printf('%s disconnected', sock:getsockname())
              else
                  callback('ReadyRead', sock)
              end
          end
      end
  end
  </code></pre>