title: Python select with sockets and sys.stdin
body: <p>I'm new to Python programming and I'm trying to create a server and a client.  I still want to be able to type something from the keyboard so i can close the server from the server by typing 'exit'.  I've taken samples codes from various sites to get to where I'm at in socket programming and this code.</p>
  
  <p>However, whenever I run the code I get the following error message:</p>
  
  <pre><code>The host name of this machine is 127.0.0.1
  The IP address of the host is 127.0.0.1
  Server now awaiting client connection on port 2836
  im right before the select
  Traceback (most recent call last):
    File "/root/Server_2.py", line 42, in &lt;module&gt;
      inputready, outputready, exceptready = select.select(input, [], [])
  TypeError: argument must be an int, or have a fileno() method.
  &gt;&gt;&gt; 
  </code></pre>
  
  <p>I was reading around that to get passed this (in Windows) is to remove the sys.stdin because Windows only accepts sockets. I'm trying to write this code in Linux.  I've tried all sorts of things to try to get it to work and I'm all out of resources and ideas to try. Below is the server code:</p>
  
  <pre><code>import socket                       #import socket module
  import select
  import sys
  
  host = "127.0.0.1"
  print ("The host name of this machine is " + host)
  hostIP = socket.gethostbyname(host)    # get host IP address
  print ("The IP address of the host is %s" % (hostIP)) 
  port = 2836                        # Reserve the port for the server
  s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  s.bind((hostIP, port))                # This server to a port
  
  s.listen(4)                         # Now wait for client connection
  
  print("Server now awaiting client connection on port %s" % (port))
  
  #WINDOWS ONLY ACCEPTS SOCKETS FOR SELECT(), no standard in
  input = [s, sys.stdin]
  
  
  running = 1
  
  while running:
  
  
      print("im right before the select")
      # when there's something in input, then we move forward
      # ignore what's in output and except because there's nothing
      # when it comes to sockets
      inputready, outputready, exceptready = select.select(input, [], [])
  
      print("i'm here na")
      # check who made a response
      for x in inputready:
  
          if x == s:
              print(s)
              #handle the server socket
              client, address = s.accept()
              print("connection comming in")
              input.append(client)
  
          elif x == sys.stdin:
              # handle standard input
              stuff = sys.stdin.readline()
              if stuff == "exit":
                  running = 0
              else:
                  print("you typed %s" % (stuff))
  
  
          else:
              #handle all other sockets
              data = x.recv(1024)
              print("i received " + data)
              if data:
                  if data == "exit":
                      x.close()
                      input.remove(x)
                      running = 0
                  else:
                      x.send(data)
                      print("I am sending %s" % (data))
              else:
                  x.close()
                  input.remove(x)
  
  
  s.close()
  </code></pre>
  
  <p>Any help or ideas would be greatly appreciated. Thanks!!</p>