Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

Python SocketServer Test

By: a guest on Sep 8th, 2010  |  syntax: Python  |  size: 1.46 KB  |  views: 682  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. import SocketServer
  2. import socket
  3. import threading
  4.  
  5. clients=[]
  6.  
  7. class EchoRequestHandler(SocketServer.BaseRequestHandler):
  8.         def setup(self):
  9.                 print str(self.client_address[0])+' connected.'
  10.         def handle(self):
  11.                 new=1
  12.                 for client in clients:
  13.                         if client==self.request:
  14.                                 new=0
  15.                 if new==1:
  16.                         clients.append(self.request)
  17.                 for client in clients:
  18.                         data=self.request.recv(1024)
  19.                         client.send(data)
  20.                
  21. class Host:
  22.         def __init__(self):
  23.                 self.address = ('localhost', 0)
  24.                 self.server = SocketServer.TCPServer(self.address, EchoRequestHandler)
  25.                 ip, port = self.server.server_address
  26.                 self.t = threading.Thread(target=self.server.serve_forever)
  27.                 self.t.setDaemon(True)
  28.                 self.t.start()
  29.                 print ''
  30.                 print 'Hosted with IP: '+ip+' and port: '+str(port)+'. Clients can now connect.'
  31.                 print ''
  32.         def close(self):
  33.                 self.server.socket.close()
  34.  
  35. class Client:
  36.         name=''
  37.         ip=''
  38.         port=0
  39.         def __init__(self,ip,port,name):
  40.                 self.name=name
  41.                 self.hostIp=ip
  42.                 self.hostPort=port
  43.                 self.s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  44.                 self.s.connect((self.hostIp, self.hostPort))
  45.         def reco(self):
  46.                 self.s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  47.                 self.s.connect((self.hostIp, self.hostPort))
  48.         def nick(self,newName):
  49.                 self.name=newName
  50.         def send(self,message):
  51.                 message=self.name+' : '+message
  52.                 len_sent=self.s.send(message)
  53.                 response=self.s.recv(len_sent)
  54.                 print response
  55.                 self.reco()
  56.         def close(self):
  57.                 self.s.close()
clone this paste RAW Paste Data