Advertisement
Guest User

Python SocketServer Test

a guest
Sep 8th, 2010
709
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.46 KB | None | 0 0
  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()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement