Advertisement
Guest User

Untitled

a guest
Jul 1st, 2011
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.06 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. import sys, socket
  4. import threading
  5.  
  6.  
  7. class Server:
  8.     def __init__(self, address):
  9.         self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  10.         self.socket.bind(address)
  11.         self.socket.listen(5)
  12.  
  13.         self.clients = []
  14.         self.pseudos = []
  15.  
  16.     def wait_for_clients(self):
  17.         while True:
  18.             client, address = self.socket.accept()
  19.             self.clients.append(client)
  20.             t = ListeningThread(self.clients, client, self.pseudos)
  21.             t.start()
  22.  
  23.  
  24. class ListeningThread(threading.Thread):
  25.     def __init__(self, clients, client, pseudos):
  26.         threading.Thread.__init__(self)
  27.         self.clients = clients
  28.         self.client = client
  29.         self.pseudos = pseudos
  30.  
  31.     def run(self):
  32.         name = self.client.recv(1024)
  33.         print type(name)
  34.         address = self.client.getsockname()
  35.         message = "<font color='gray'><b>" + name + "</b> est connecté</font>"
  36.         if len(self.pseudos) > 0:
  37.             self.client.send("MAJsuperman " + ','.join(self.pseudos))
  38.         self.send_to_all(message)
  39.         self.pseudos.append(name)
  40.         self.send_to_all("JOINsuperman " + name)
  41.         while True:
  42.             message = self.client.recv(1024)
  43.             if message == "":
  44.                 self.clients.remove(self.client)
  45.                 message = "<font color='gray'><b>" + name + "</b> s'est déconnecté</font>"
  46.                 self.send_to_all("LEFTsuperman " + name)
  47.                 self.pseudos.remove(name)
  48.                 self.send_to_all(message)
  49.                 break
  50.             message = "<b>" + name + "</b> : " + message
  51.             self.send_to_all(message)
  52.  
  53.     def send_to_all(self, message):
  54.         print message
  55.         for client in self.clients:
  56.             client.send(message)
  57.            
  58. if len(sys.argv) != 3:
  59.     print """Usage: python server.py ip port
  60. example: python server.py localhost 54321"""
  61.     sys.exit()
  62.    
  63. address = sys.argv[1], int(sys.argv[2])
  64. server = Server(address)
  65. server.wait_for_clients()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement