Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- import sys, socket
- import threading
- class Server:
- def __init__(self, address):
- self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- self.socket.bind(address)
- self.socket.listen(5)
- self.clients = []
- self.pseudos = []
- def wait_for_clients(self):
- while True:
- client, address = self.socket.accept()
- self.clients.append(client)
- t = ListeningThread(self.clients, client, self.pseudos)
- t.start()
- class ListeningThread(threading.Thread):
- def __init__(self, clients, client, pseudos):
- threading.Thread.__init__(self)
- self.clients = clients
- self.client = client
- self.pseudos = pseudos
- def run(self):
- name = self.client.recv(1024)
- print type(name)
- address = self.client.getsockname()
- message = "<font color='gray'><b>" + name + "</b> est connecté</font>"
- if len(self.pseudos) > 0:
- self.client.send("MAJsuperman " + ','.join(self.pseudos))
- self.send_to_all(message)
- self.pseudos.append(name)
- self.send_to_all("JOINsuperman " + name)
- while True:
- message = self.client.recv(1024)
- if message == "":
- self.clients.remove(self.client)
- message = "<font color='gray'><b>" + name + "</b> s'est déconnecté</font>"
- self.send_to_all("LEFTsuperman " + name)
- self.pseudos.remove(name)
- self.send_to_all(message)
- break
- message = "<b>" + name + "</b> : " + message
- self.send_to_all(message)
- def send_to_all(self, message):
- print message
- for client in self.clients:
- client.send(message)
- if len(sys.argv) != 3:
- print """Usage: python server.py ip port
- example: python server.py localhost 54321"""
- sys.exit()
- address = sys.argv[1], int(sys.argv[2])
- server = Server(address)
- server.wait_for_clients()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement