1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
   | import os, sys, random , math
import psyco
 
import main
 
psyco.full()
 
 
 
import socket, sys, threading 
 
class ThreadServeur(threading.Thread): 
   def __init__(self): 
    threading.Thread.__init__(self) 
 
   def run(self):
     main.init
 
class ThreadClient(threading.Thread): 
 
 def __init__(self, conn): 
  threading.Thread.__init__(self) 
  self.connexion = conn 
 
 def run(self): 
 
  nom = self.getName() 
  while 1: 
    msgClient = self.connexion.recv(1024) 
    if msgClient.upper() == "FIN" or msgClient =="": 
      break 
    message = "%s> %s" % (nom, msgClient) 
    print message 
 
    for cle in start.conn_client: 
      if cle != nom:
        global conn_client
        conn_client[cle].send(message) 
 
 
 
  self.connexion.close() 
  del conn_client[nom] 
  print "Client %s deconnecte." % nom 
 
def start(HOST,PORT):
 
  main = ThreadServeur()
  main.start()
 
  mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
  try: 
    mySocket.bind((HOST, PORT)) 
  except socket.error: 
    print "La liaison du socket a l'adresse choisie a echoue." 
    sys.exit() 
  print "Serveur pret, en attente de requetes ..." 
  mySocket.listen(5) 
 
 
  global conn_client
  conn_client = {} 
  while 1: 
    connexion, adresse = mySocket.accept() 
 
    th = ThreadClient(connexion) 
    th.start() 
 
    it = th.getName() 
    conn_client[it] = connexion 
    print "Client %s connecte, adresse IP %s, port %s." % (it , adresse[0], adresse[1])
 
 
    connexion.send("Vous etes connecte") | 
Partager