title: How to make a kick feature in Python socket chat room?
body: <p>This a socket chat room where clients can send messgaes to each other. I want a kick feature where the server can kick out certain people.</p>
  
  <p>I have managed to make it so that it kicks the desired user out but it is still kicking me out as well, this is the code that does this:</p>
  
  <pre><code>for name in keys:
      if('**kick '+name) in data:
          clients[name].close()
          del clients[name]
          found = True
  </code></pre>
  
  <p>I have tried this:</p>
  
  <pre><code>for name in keys:
      if('**kick '+name) in data:
          data = data.replace('**kick '+name,'')
          clients.get(name).pop
          found = True
  </code></pre>
  
  <p>But when I run this code and try it, I get kicked instead.</p>
  
  <p>This is my full code:</p>
  
  <h1>Server.py</h1>
  
  <pre><code>import socket, threading
  host = "127.0.0.1"
  port = 4000
  s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  s.bind((host,port))
  s.listen()
  clients = {}
  print("Server is ready...")
  serverRunning = True
  def handle_client(conn, uname):
  
      clientConnected = True
      keys = clients.keys()
      help = 'There are 3 commands in Messenger\n1**chatlist &gt; gives you the list of the people currently online\n2**quit &gt; To end your session and quit the server\n3**(username) sends a private message to any user you want'
  
      while clientConnected:
          try:
              response = 'Number of People Online\n'
              data = conn.recv(1024).decode('ascii')
              found = False
              if '**' not in data:
                  for k,v in clients.items():
                      if v != conn:
                          v.send(data.encode('ascii'))
                          found = True
  
  
              elif '**chatlist' in data:
                  clientNo = 0
                  for name in keys:
                      clientNo += 1
                      response = response + str(clientNo) +'::' + name+'\n'
                  conn.send(response.encode('ascii'))
                  found = True
  
  
              elif '**help' in data:
                  conn.send(help.encode('ascii'))
                  found = True
              else:
                  for name in keys:
                      if('**'+name) in data:
                          data = data.replace('**'+name,'')
                          clients.get(name).send(data.encode('ascii'))
                          found = True
                      if('**kick '+name) in data:
                          clients.get(name).pop
                          found = True
                  if(not found):
                      conn.send('Trying to send message to invalid person.'.encode('ascii'))
  
  
          except:
              clients.pop(uname)
              print(uname + ' has logged out')
              clientConnected = False
  
  while serverRunning:
      conn,addr = s.accept()
      uname = conn.recv(1024).decode('ascii')
      print('%s connected to the server'%str(uname))
      conn.send('Welcome to Messenger. Type **help to know all the commands'.encode('ascii'))
  
      if(conn not in clients):
          clients[uname] = conn
          threading.Thread(target = handle_client, args = (conn, uname,)).start()
  </code></pre>
  
  <h1>Client.py</h1>
  
  <pre><code>import socket,threading
  host = "127.0.0.1"
  port = 4000
  s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  s.connect((host,port))
  uname = input("Enter username: ")
  s.send(uname.encode('ascii'))
  clientRunning = True
  
  def echo_data(sock):
     serverDown = False
     while clientRunning and (not serverDown):
        try:
           data = sock.recv(1024).decode('ascii')
           print(data)
        except:
           print('Server is Down. You are now Disconnected. Press enter to exit...')
           serverDown = True
  
  
  threading.Thread(target=echo_data, args = (s,)).start()
  while clientRunning:
     tempMsg = input()
     data = uname + '&gt;&gt; ' + tempMsg
     s.send(data.encode('ascii'))
  </code></pre>