# chatserver3.py

import socket, threading

class server3(threading.Thread) :
   def __init__(self, (socket, address) ):
      threading.Thread.__init__(self)
      self.SOCKET=socket
      self.ADDRESS=address

   def run(self) :
      print 'Connected ', self.ADDRESS
      while True :
         From=self.SOCKET.recv(1024) # Read from client
         if not From : break
         self.SOCKET.send(From)
         self.SOCKET.close()
      print 'Disconnected ', self.ADDRESS

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 888))
s.listen(4)

while True :                 # Wait for connection/run server
   server3( s.accept() ).start(); 
# chatserver4.py

import socket, threading

class server4(threading.Thread) :
   def __init__(self, (socket, address) ):
      threading.Thread.__init__(self)
      self.SOCKET=socket
      self.ADDRESS=address

   def run(self) :
      vector.append(self)
      print 'Connected ', self.ADDRESS
      while True :
         From=self.SOCKET.recv(1024) # Read from client
         if not From : break
         for s in vector :
               if s != self :
                  s.SOCKET.send(From)
         self.SOCKET.close()
      print 'Disconnected ', self.ADDRESS
      vector.remove(self)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 888))
s.listen(4)
vector = []

while True :             # Wait for connection/run server
   server4( s.accept() ).start();