title: TypeError argument must be an int or have a fileno() method
body: <p>Seen here <a href="https://stackoverflow.com/search?q=TypeError+argument+must+be+an+int+or+have+a+fileno%28%29+method">https://stackoverflow.com/search?q=TypeError+argument+must+be+an+int+or+have+a+fileno%28%29+method</a></p>
  <p>But just can't quite find my answer. I am trying out a chat script</p>
  <p>Server side runs perfectly fine.</p>
  <pre><code># chat_server.py
   
  import sys
  import socket
  import select
  
  HOST = 'localhost' 
  SOCKET_LIST = []
  RECV_BUFFER = 4096 
  PORT = 9009
  
  def chat_server():
  
      server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
      server_socket.bind((HOST, PORT))
      server_socket.listen(10)
   
      # add server socket object to the list of readable connections
      SOCKET_LIST.append(server_socket)
   
      print(&quot;Chat server started on port &quot; + str(PORT))
   
      while 1:
  
          # get the list sockets which are ready to be read through select
          # 4th arg, time_out  = 0 : poll and never block
          ready_to_read,ready_to_write,in_error = select.select(SOCKET_LIST,[],[],0)
        
          for sock in ready_to_read:
              # a new connection request recieved
              if sock == server_socket: 
                  sockfd, addr = server_socket.accept()
                  SOCKET_LIST.append(sockfd)
                  print(&quot;Client (%s, %s) connected&quot; % addr)
                   
                  broadcast(server_socket, sockfd, &quot;[%s:%s] entered our chatting room\n&quot; % addr)
               
              # a message from a client, not a new connection
              else:
                  # process data recieved from client, 
                  try:
                      # receiving data from the socket.
                      data = sock.recv(RECV_BUFFER)
                      if data:
                          # there is something in the socket
                          broadcast(server_socket, sock, &quot;\r&quot; + '[' + str(sock.getpeername()) + '] ' + data)  
                      else:
                          # remove the socket that's broken    
                          if sock in SOCKET_LIST:
                              SOCKET_LIST.remove(sock)
  
                          # at this stage, no data means probably the connection has been broken
                          broadcast(server_socket, sock, &quot;Client (%s, %s) is offline\n&quot; % addr) 
  
                  # exception 
                  except:
                      broadcast(server_socket, sock, &quot;Client (%s, %s) is offline\n&quot; % addr)
                      continue
  
      server_socket.close()
      
  # broadcast chat messages to all connected clients
  def broadcast (server_socket, sock, message):
      for socket in SOCKET_LIST:
          # send the message only to peer
          if socket != server_socket and socket != sock :
              try :
                  socket.send(message)
              except :
                  # broken socket connection
                  socket.close()
                  # broken socket, remove it
                  if socket in SOCKET_LIST:
                      SOCKET_LIST.remove(socket)
   
  if __name__ == &quot;__main__&quot;:
  
      sys.exit(chat_server())
  </code></pre>
  <p>But client</p>
  <pre><code>import sys
  import socket
  import select
   
  def chat_client():
  
      host = &quot;127.0.0.1&quot;
      port = 9009
       
      s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      s.settimeout(2)
       
      # connect to remote host
      try :
          s.connect((host, port))
      except :
          print('Unable to connect')
          sys.exit()
       
      print('Connected to remote host. You can start sending messages')
      sys.stdout.write('[Me] '); sys.stdout.flush()
       
      while 1:
          socket_list = [sys.stdin, s]
          potential_errs=[]
          
          # Get the list sockets which are readable
          ready_to_read,ready_to_write, in_error = select.select(socket_list , host, int(1))
           
          for sock in ready_to_read:             
              if sock == s:
                  # incoming message from remote server, s
                  data = sock.recv(4096)
                  if not data :
                      print('\nDisconnected from chat server')
                      sys.exit()
                  else :
                      #print data
                      sys.stdout.write(data)
                      sys.stdout.write('[Me] '); sys.stdout.flush()     
              
              else :
                  # user entered a message
                  msg = sys.stdin.readline()
                  s.send(msg)
                  sys.stdout.write('[Me] '); sys.stdout.flush() 
  
  if __name__ == &quot;__main__&quot;:
  
      sys.exit(chat_client())
  </code></pre>
  <p>Has run from cmd, not IDLE because of issues (read something about it relating to my issue)</p>
  <p>Traceback</p>
  <pre><code>line 50 in module
  
      sys.exit(chat_client())
  
  line 28 in chat_client
  
      ready_to_read,ready_to_write, in_error = select.select(socket_list , host, int(1))
  
  TypeError: argument must be an int or have a fileno() method
  </code></pre>