Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme echange client serveur

Sujet résolu
    13 août 2014 à 15:38:02

    bonjour j'essaie de faire un petit script pour envoyer un fichier text a un serveur , j'arrive a le faire fonctionner en local mais quand un ami essaie de m'envoyer un fichier ca ne marche pas , je précise que je veux utiliser mon ordindateur comme serveur j'ai don cfait un redirection de port si on se connecte sur l'adresse ip de ma livebox on est redirigé sur mon pc

    serveur:

    host='127.0.0.1'
    port=8084
    
    def start():
      
      s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
      try:
        s.bind((host, port))
      except(socket.error):
        print "port déja utiliser"
        sys.exit()
        
    
      s.listen(5)
      print "Serveur en attente de clients \n"
      conn,addr=s.accept()
      print "Client connecter \n"
    
      reception(s,conn)
    
    
    def reception(s,conn):
    
      nom=conn.recv(1024)    #on recoit le nom du fichier uploadé
      fich1=open(nom,'w')    #on ouvre en écriture un fichier du meme nom
    
      msg='ok'                
      conn.send(msg)         #on envoie un msg de confirmation
    
      data=conn.recv(1024)   #on recoit le contenu du fichier
      fich1.write(data)
      
      fich1.close()
      conn.close()
      s.close()
      start()                #on relance le script pour un prochain upload
    
    
    start()
    

    client:

    host='adresse ip de ma livebox'
    port=8084
    
    s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((host,port))
    
    nom="data.txt"
    
    def upload():
        
        fich1=open(nom,"r")
        data=fich1.readline()
        s.send(nom)             #on envoie le nom du fichier uploadé
    
        msg=s.recv(1024)        #on attend la confirmation du serveur
    
        if(msg=='ok'):
            s.send(data)        #on envoie le contenu du fichier uploadé
            s.close()
    
    
    upload()
    




    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      13 août 2014 à 15:57:30

      Utilise ta box.

      Comment ?

      Fais tourner CA :

      try:
      	hote = socket.gethostbyname(socket.gethostname())
      except NameError as nom_err:
      	print(nom_err)
      except TypeError as type_err:
      	print(type_err)
      print(" " * 21 + "Écoute sur le serveur {0}.\n".format(hote))



      • Partager sur Facebook
      • Partager sur Twitter
        13 août 2014 à 16:04:44

        en local quand je met 127.0.0.1 le serveur arrive a recevoir le fichier du client j'ai pas eu de probleme pour ca  mais si le client se trouve sur un autre ordi , je ne sais pas quoi mettre dans host="" pour le serveur  j'ai lu qu'il fallait mettre 0.0.0.0 ou rien : ""

        et ensuite faut il que je reste en protocole TCP ou que soit en UDP  pour ce que je veux faire ?

        et ensuite je n'ai pas compris ton script peut m'expliquer ligne par ligne ce serait sympa de ta part merci :)

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          13 août 2014 à 16:48:08

          bah tu mets l'adresse de ta l'adresse de ta box port 50000 car il est rarement utilisé. Si si tu dois mettre un host. Le code que j'ai écrit dit:

          essaye avec le module socket (croote je l'avais pas importé) de récupérer l'hote actuel et tu l'affiche.

          • Partager sur Facebook
          • Partager sur Twitter
            13 août 2014 à 19:18:19

            ca n'a pas marché le client ne se connecte pas a mon pc

            sur internet je trouve plein de tuto pour faire ca mais c'est toujours en local avec le client et le serveur sur le meme ordi ou reseaux 

            MOI J'AI BESOIN DE FAIRE CA AVEC LE CLIENT SUR UN ORDINATEUR DISTANT :( :( :(

            • Partager sur Facebook
            • Partager sur Twitter
              13 août 2014 à 20:02:44

              Dans les fichiers que tu as donné, le serveur est configuré pour répondre aux requêtes qui lui arrivent sur l'adresse IP 127.0.0.1 (ligne 1) port 8084.

              Ca marche pour les tests quand le client est sur la même machine (il appelle 127.0.0.1 = localhost) mais quand ça vient de l'extérieur, ça arrive par ton routeur (ADSL), celui-ci redirige vers la carte réseau (ethernet ou wifi) de ton serveur. Et donc ça arrive par une adresse IP qui est celle associée à la carte, genre 192.168.10.3

              Le plus simple est de dire que le serveur répond aux requêtes qui arrivent sur n'importe quelle adresse IP, c'est ce qu'on fait en mettant l'adresse 0.0.0.0 qui sert exactement à ça.

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                13 août 2014 à 23:08:01

                dans ton code tu signal en cas d'échec de connection que le port est utilisé, c'est faux car tu peut utiliser le port 80 pendant que wamp et skype et internet tournent alors qu'ils utilisent tous ce port, j'ai testé
                • Partager sur Facebook
                • Partager sur Twitter
                  17 août 2014 à 16:11:35

                  merci ca m'a un peu aidé mais j'ai toujours des problemes :(

                  -Le script serveur doit il etre dans le dossier www du pc comme pour un site avec wamp ? 

                  -si je veux envoyer des donné ne faut il pas les transformer d'abord en octet ? ou autre chose ?

                  -et les donné que je veux envoyé ne font pas toujours exactement 1024 octet alors dans conn.recv(1024) et dans send il faut que je mette quoi ? 

                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 août 2014 à 16:57:06

                    l'erreur que mon ami obtient :

                    return getattr(self._sock,name)(*args)

                    error: [Errno 10060] Une tentative de connexion a échoué car le parti connecté n'a pas répondu convenablement au-delà d'une certaine durée ou une connexion établie a échoué car l'hôte de connexion n'a pas répondu

                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 août 2014 à 17:27:40

                      Le mieux serait que tu montres ta version "corrigée" des programmes.

                      Pour bien faire il faudrait aussi que tu expliques comment sont reliés ton client et ton serveur. A travers des routeurs ADSL ? Configurés comment ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 août 2014 à 20:03:38

                        ben y'a pas de version corrigé j'ai rien changé a part le 0.0.0.0 a la place du ""

                        le client et sur un pc distant relié a une box adsl et mon serveur et sur mon pc relié a une box adsl aussi

                        sur ma box j'ai fait une redirection pour que lorsqu'on se connecte dessus on soit redirigé vers mon ordinateur sur l'adresse 127.0.0.1

                        je sais que ca na rien a voir mais quand mon ami se connecte sur mon site hebergé en local grace a wamp il n'ya aucun probleme alors je ne comprend pas pourquoi la connexion ne se fait pas quand il utilise mon client

                        • Partager sur Facebook
                        • Partager sur Twitter
                          17 août 2014 à 20:09:31

                          le serveur sera sur mon pc et recevra des chaines de caractères de la part des clients puis une fonction mettra ces chaines de caractères dans des fichiers texte 

                          EN GROS c'est comme pour un login et une inscription je veux que lorsqu"un utilisateur crée un compte sur mon client , que les donné soit transmisent au serveur puis traités pour que l'utilisateur puissent se connecter par la suite

                          en html et php c'est simple et meme la en python le traitement je le trouve simple mais pour envoyer les donnés et les recuperer je suis perdu :( la connection ne se fait pas :'(

                          • Partager sur Facebook
                          • Partager sur Twitter
                            18 août 2014 à 10:16:16

                            amayer a écrit:


                            sur ma box j'ai fait une redirection pour que lorsqu'on se connecte dessus on soit redirigé vers mon ordinateur sur l'adresse 127.0.0.1

                            Si tu as fait ça, forcément, ça ne marche pas.

                            Tu dois faire la redirection vers l'adresse de la carte reseau ou wifi.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              18 août 2014 à 11:09:32

                              comment ca sur ladresse de la carte reseau  ? tu veux dire sur 192.168.1.10 par exemple qui est ladresse de mon pc sur le reseau ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                18 août 2014 à 11:18:27

                                Oui.

                                l'adresse 127.0.0.1 est ce qu'on appelle l'adresse locale (localhost), c'est un moyen pour chaque machine de se désigner elle-même par une adresse réseau.

                                Autrement dit, sur ta *box, si tu rediriges le port, par exemple 8084  vers le port 5000 de 127.0.0.1, ça veut dire que ce qui lui arrive de l'extérieur sur le port 8084 est réexpédié à ... elle-même, autrement dit ton PC n'en verra pas la couleur. Et bien sur ne répondra pas.

                                Ca serait bien que tu lises un petit document pour expliquer qui explique les bases du réseau TCP/IP, sinon tu vas patiner un bon moment. Ce n'est pas très compliqué, mais ça ne s'invente pas.

                                -
                                Edité par michelbillaud 18 août 2014 à 11:19:41

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  18 août 2014 à 11:30:18

                                  oui mais avec wamp je mettai mon site dans le dossier www pour qu'il soit accessible en local , et pour qu'on puisse y acceder partout (internet) ben j'ai juste rediriger le port 8080 sur 127.0.0.1 et quand on se connectait a ma livebox au lieu d'un error 404 ben y'avait mon site

                                  alors qu'elle redirection je dois faire sur ma box ?

                                  mon pc a comme adresse 192.168.1.10 sur mon reseau 

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    18 août 2014 à 11:31:24

                                    relis calmement mon message, et réfléchis deux secondes.

                                    Et ne repose pas 3 fois la même question sans tenir compte des réponses. Y a un moment on finit par se dire que, comme maxwell, ce n'est pas la peine d'en rajouter.

                                    -
                                    Edité par michelbillaud 18 août 2014 à 11:45:27

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      18 août 2014 à 11:33:42

                                      mon programme python client serveur marche en  LOCAL ! je le précise donc c'est qu'il marche :p mais quand le client est pas en local ca marche plus donc oui tu as raison logiquement c'est la redirection qui n'est pas bonne

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        18 août 2014 à 11:35:25

                                        je vais changer je vais mettre 192.168.1.10 ladresse de mon pc sur le reseau , a la place du 127.0.0.1 , mais ce que je ne compred plus c'est pourquoi alors pour wamp je devais utiliser localhost comme redirection et  pas 192.168.1.10  ?
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          18 août 2014 à 12:50:30

                                          Quand tu testes sur ton reseau interne, tu ne passes pas par ta *Box,

                                          et donc une mauvaise configuration de celle-ci n'a pas d'impact.

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            18 août 2014 à 13:40:29

                                            ...

                                            -
                                            Edité par amayer 19 août 2014 à 13:10:40

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              19 août 2014 à 12:17:26

                                              ...

                                              -
                                              Edité par amayer 19 août 2014 à 13:10:52

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                19 août 2014 à 13:09:41

                                                J'AI TROUVE LA SOLUTION !!!!!!!!! a mon problème , je n'ai toujours pas réussi a configurer ma box pour permettre l'utilisation de script client serveur avec la fonction socket, MAIS !

                                                envoyer des infos a un serveur je savais le faire avec un script php et une page web par exemple pour une page d'inscription 

                                                alors j'ai tout simplement cherché si on ne pouvait pas appeler un script php a partir de python avec en paramètres les chaines de caractères a envoyer ;)  

                                                import urllib
                                                
                                                mail=raw_input("mail:")
                                                password=raw_input("password:")
                                                
                                                
                                                url="http://127.0.0.1:8080/post.php"  #adresse du script php
                                                
                                                param=urllib.urlencode({'mail':mail,'password':password})  #parametres pour la fonction POST du script php
                                                urllib.urlopen(url,param)
                                                
                                                <?php      
                                                  header('location: header.htm');      
                                                ?>
                                                
                                                <?php
                                                $handle = fopen("users.txt", "a");
                                                foreach($_POST as $variable => $value) {
                                                   fwrite($handle, $variable);
                                                   fwrite($handle, "=");
                                                   fwrite($handle, $value);
                                                   fwrite($handle, "\r\n");
                                                }
                                                fwrite($handle, "\r\n");
                                                fclose($handle);
                                                exit;
                                                ?>

                                                ET VOILA :) je peut donc avec un script python envoyer des chaines de caractères a mon serveur et pour ce qui est de lire les données avec le client  , il suffit d'utiliser urllib pour aller chercher les infos sur votre site hebergé en local avec wamp

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Anonyme
                                                  23 août 2014 à 14:40:25

                                                  Tu peux essayer ce script (j'ai essayé avec l'adresse de ma box depuis mon pc et celui d'un ami, et on peut discuter, sauf que si le cient quitte, tout le monde quitte . . . ) :

                                                  client

                                                  #-*-coding: utf8-*
                                                  
                                                  from    threading import Thread
                                                  import  platform  as p
                                                  import  socket
                                                  import  time
                                                  import  sys
                                                  import  re
                                                  import  os
                                                  
                                                  os.system("color 0f")
                                                  
                                                  id_co_individuel = 0
                                                  msg_a_envoyer = ""
                                                  ligne_a_ajouter = ""
                                                  msg_a_encoder = ""
                                                  
                                                  def async_recv(client_socket):
                                                  	while 1:
                                                  		msg_recu = client_socket.recv(1024)
                                                  		if msg_recu == b"":
                                                  			client_socket.close()
                                                  			print("Le serveur est arrêté.\n")
                                                  			break
                                                  		if msg_recu != msg_a_encoder:
                                                  			msg_recu = msg_recu.decode()
                                                  			if re.search(r'^id_', msg_recu) is None:
                                                  				print("\n>>>{0}".format(msg_recu))
                                                  			else:
                                                  				id_co_individuel = int(re.sub(r'(id_)', r'', msg_recu))
                                                  		elif msg_a_encoder == msg_recu:
                                                  			msg_recu = msg_recu.decode()
                                                  			print("\n>>>Envoyé : {0}".format(msg_recu))
                                                  
                                                  def envoie(msg_a_envoyer):
                                                  	msg_a_encoder = str(msg_a_envoyer)
                                                  	msg_a_encoder = msg_a_encoder.encode()   #Luc: pas la bonne variable (c'était msg_a_envoyer)
                                                  	print(". . .")
                                                  	connexion_avec_serveur.send(msg_a_encoder)
                                                  	msg_a_encoder   = ""
                                                  	#msg_a_envoyer   = "" #Luc: cette variable est locale à la fonction ! elle est passée en copie, donc ce n'est pas la même que la variable
                                                  		#qui est passée en argument ! La confusion vient que tu as utilisé le même nom !
                                                  	#on envoie le message
                                                  	#print("")  #Luc: une fonction doit faire seulement ce qu'elle doit faire, ici c'est send donc elle a pas à faire de print sur l'écran
                                                  
                                                  print(" " * 20 + "****** Client Elranet, bienvenue. ******\n\n\n" + " " * 20)
                                                  defhote = "127.0.0.1"
                                                  try:
                                                  	defhote = socket.gethostbyname(socket.gethostname())
                                                  except NameError as nom_err:
                                                  	print(nom_err)
                                                  except TypeError as type_err:
                                                  	print(type_err)
                                                  hote = input(" " * 21 + "Entrez le nom de l'hôte [{0}]> ".format(defhote))
                                                  if hote.strip() == "":
                                                  	hote = defhote
                                                  while 1:
                                                  	sport = input(" " * 21 + "Entrez le port [50000] > ")
                                                  	print("\n")
                                                  	if sport.strip() == "":
                                                  		sport = 50000
                                                  		break
                                                  	try:
                                                  		sport = sport.strip()
                                                  		int(sport)
                                                  		break
                                                  	except ValueError:
                                                  		print("Dis Toto, t'as pas compris ? Il me faut un chiffre !\n")
                                                  port = int(sport)
                                                  print("\n")
                                                  print("_" * 80 + "|/-\\" * (81 // 4) + "|   " * (81 // 4))
                                                  
                                                  afficher = lambda cle, valeur: print("{k} :: {v}".format(k=cle, v=valeur))
                                                  systeme = p.system()
                                                  python = p.python_version()
                                                  jeu, formatFichier = p.architecture()
                                                  distribution = p.version()
                                                  afficher("Système      Opérant    ", systeme)
                                                  afficher("Architecture Processeur ", jeu)
                                                  afficher("Version      Système    ", distribution)
                                                  afficher("Version      Python     ", python)
                                                  print("")
                                                  
                                                  connexion_avec_serveur = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                                                  print("Connection sur le serveur {0} au port {1} . . .\n".format(hote, port))
                                                  connexion_avec_serveur.connect((hote, port))
                                                  
                                                  envoie(systeme)
                                                  envoie(jeu)
                                                  envoie(distribution)
                                                  envoie(python)
                                                  
                                                  # faire la réception du socket dans un autre thread
                                                  thread =  Thread(target=async_recv, args = (connexion_avec_serveur,))
                                                  thread.start()
                                                  
                                                  print("Connexion établie avec le serveur sur le port {}.".format(port))
                                                  
                                                  while msg_a_envoyer.lower() != "fin":
                                                  	try:
                                                  		#partie du code où on va écrire un message pour le client
                                                  		while 1:
                                                  			ligne_a_ajouter = input("> ")
                                                  			if ligne_a_ajouter == "send": #la commande 'fin' demande l'arrêt du serveur 
                                                  				break
                                                  			elif ligne_a_ajouter.lower() == "fin":
                                                  				#on arrete tout :
                                                  				break
                                                  			elif ligne_a_ajouter == "ren":
                                                  				msg_a_envoyer += "\n"
                                                  				msg_a_envoyer += ligne_a_ajouter
                                                  				ligne_a_ajouter = ""
                                                  				envoie(msg_a_envoyer)
                                                  				msg_a_envoyer = "" #Luc
                                                  			elif ligne_a_ajouter == "id":
                                                  				msg_a_envoyer += "\n"
                                                  				msg_a_envoyer += ligne_a_ajouter
                                                  				ligne_a_ajouter = ""
                                                  				envoie(msg_a_envoyer)
                                                  				msg_a_envoyer = "" #Luc
                                                  			else:
                                                  				msg_a_envoyer += "\n"
                                                  				msg_a_envoyer += ligne_a_ajouter
                                                  				ligne_a_ajouter = ""
                                                  
                                                  		if msg_a_envoyer != "" and ligne_a_ajouter.lower() != "fin" and ligne_a_ajouter != "ren":
                                                  			#on envoie
                                                  			envoie(msg_a_envoyer)
                                                  			msg_a_envoyer = "" #Luc
                                                  		#--------------------------------------------------------
                                                  		elif ligne_a_ajouter.lower() == "fin":
                                                  			msg_a_envoyer = "fin"
                                                  			msg_a_encoder = msg_a_envoyer.encode()
                                                  			connexion_avec_serveur.send(msg_a_encoder)
                                                  			break
                                                  		#--------------------------------------------------------
                                                  	except NameError as nom_erreur:
                                                  		print(nom_erreur)
                                                  
                                                  	except TypeError as type_err:
                                                  		print(type_err)
                                                  
                                                  	except EnvironmentError as env_err:
                                                  		print(env_err)
                                                  
                                                  
                                                  thread.stop()
                                                  print("Fermeture de la connexion. Appuyer sur une touche pour continuer . . .")
                                                  wait = input()
                                                  connexion_avec_serveur.close()



                                                  serveur

                                                  #-*-coding: utf8-*
                                                  
                                                  import  platform  as p
                                                  import  socket
                                                  import  select
                                                  import  re
                                                  import  os
                                                  
                                                  os.system("color 0f")
                                                  print(" " * 21 + "***** Serveur Elranet, bienvenue. *****\n\n\n" + " " * 21)
                                                  try:
                                                  	hote = socket.gethostbyname(socket.gethostname())
                                                  except NameError as nom_err:
                                                  	print(nom_err)
                                                  except TypeError as type_err:
                                                  	print(type_err)
                                                  print(" " * 21 + "Écoute sur le serveur {0}.\n".format(hote))
                                                  while 1:
                                                  	sport = input(" " * 21 + "Entrez le port [50000] > ")
                                                  	print("\n")
                                                  	if sport.strip() == "":
                                                  		sport = 50000
                                                  		break
                                                  	try:
                                                  		sport = sport.strip()
                                                  		int(sport)
                                                  		break
                                                  	except ValueError:
                                                  		print("Dis Toto, t'as pas compris ? Il me faut un chiffre !\n")
                                                  	
                                                  print("_" * 80 + "|/-\\" * (81 // 4) + "|   " * (81 // 4))
                                                  
                                                  port = int(sport)
                                                  connexion_principale = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                                                  connexion_principale.bind((hote, port))
                                                  connexion_principale.listen(5)
                                                  #keepalive : option pour savoir qui est en ligne
                                                  print("Le serveur écoute à présent sur le port {0} depuis {1}.\n".format(port, hote))
                                                  afficher = lambda cle, valeur: print("{k} :: {v}".format(k=cle, v=valeur))
                                                  systeme            = p.system()
                                                  python             = p.python_version()
                                                  jeu, formatFichier = p.architecture()
                                                  distribution       = p.version()
                                                  afficher("Système      Opérant    ", systeme)
                                                  afficher("Architecture Processeur ", jeu)
                                                  afficher("Version      Système    ", distribution)
                                                  afficher("Version      Python     ", python)
                                                  
                                                  print("")
                                                  
                                                  serveur_lance = True
                                                  clients_connectes = []
                                                  ok_a_encoder = ""
                                                  
                                                  try:
                                                  	id_co, id_co_int, recherche_id = 0, 0, 0
                                                  	id_clients = {}
                                                  except NameError as nom_err:
                                                  	print(nom_err)
                                                  	input()
                                                  except TypeError as type_err:
                                                  	print(type_err)
                                                  	input()
                                                  
                                                  while serveur_lance:
                                                  	# On va vérifier que de nouveaux clients ne demandent pas à se connecter
                                                  	# Pour cela, on écoute la connexion_principale en lecture
                                                  	# On attend maximum 50ms
                                                  	connexions_demandees, wlist, xlist = select.select([connexion_principale], [], [], 0.05)
                                                  	
                                                  	for connexion in connexions_demandees:
                                                  		connexion_avec_client, infos_connexion = connexion.accept()
                                                  		try:
                                                  			id_co += 1
                                                  			id_co_int = int(id_co)
                                                  			connexion_avec_client.send("id_{0}".format(id_co).encode())
                                                  			
                                                  			# On ajoute le socket connecté à la liste des clients
                                                  			clients_connectes.append(connexion_avec_client)
                                                  			id_clients[id_co_int] = connexion_avec_client
                                                  			
                                                  			client_en_cours = id_clients[id_co_int]
                                                  
                                                  			os_client           = client_en_cours.recv(1024).decode()
                                                  			architecture_client = client_en_cours.recv(1024).decode()
                                                  			v_client            = client_en_cours.recv(1024).decode()
                                                  			python_client       = client_en_cours.recv(1024).decode()
                                                  			print("{0} sous {1} {2} v{3} avec python {4}, id:{5}\nest maintenant connecté à Elranet."
                                                  			.format(infos_connexion, os_client, architecture_client, v_client, python_client, id_co))
                                                  		except NameError as nom_err:
                                                  			print(nom_err)
                                                  			input()
                                                  		except TypeError as type_err:
                                                  			print(type_err)
                                                  			input()
                                                  
                                                  	# Maintenant, on écoute la liste des clients connectés
                                                  	# Les clients renvoyés par select sont ceux devant être lus (recv)
                                                  	# On attend là encore 50ms maximum
                                                  	# On enferme l'appel à select.select dans un bloc try
                                                  	# En effet, si la liste de clients connectés est vide, une exception
                                                  	# Peut être levée
                                                  	clients_a_lire = []
                                                  	try:
                                                  		clients_a_lire, wlist, xlist = select.select(clients_connectes, [], [], 0.05)
                                                  	except select.error:
                                                  		pass
                                                  
                                                  	finally:
                                                  		# On parcourt la liste des clients à lire
                                                  		for client in clients_a_lire:
                                                  			# Client est de type socket
                                                  			msg_recu = ""
                                                  			msg_recu = client.recv(1024)
                                                  			# Peut planter si le message contient des caractères spéciaux
                                                  			msg_recu = msg_recu.decode()
                                                  			msg_recu = "{0} a envoyé : {1}".format(infos_connexion, msg_recu)
                                                  			print("\n{0}".format(msg_recu))
                                                  			ok = "5 / 5"
                                                  			ok_a_encoder = ok.encode()
                                                  			client.send(ok_a_encoder)
                                                  			if re.search(r'ren$', msg_recu) is None:
                                                  				for client in clients_connectes:
                                                  					client.send(msg_recu.encode())
                                                  				ok_a_encoder = ""
                                                  			elif re.search(r'ren$', msg_recu) is not None:
                                                  				last_name = re.sub(r'(.+)(\nren)', r'\1', msg_recu)
                                                  				while recherche_id != id_co_int:
                                                  					recherche_id += 1
                                                  				if recherche_id == id_co_int:
                                                  					envoie_id = id_clients[recherche_id]
                                                  				print("{0} a demandé à être renommé en {1}."
                                                  				.format(envoie_id, last_name))
                                                  				for client in clients_connectes:
                                                  					client.send("{0} a demandé à être renommé en {1}."
                                                  					.format(envoie_id, last_name).encode())
                                                  				ok_a_encoder = ""
                                                  				id_co = str(id_co)
                                                  				id_co = last_name
                                                  				id_client[recherche_id] = last_name
                                                  			elif re.search(r'id', msg_recu) is not None:
                                                  				while recherche_id != id_co_int:
                                                  					recherche_id += 1
                                                  				if recherche_id == id_co_int:
                                                  					envoie_id = id_clients[recherche_id]
                                                  					envoie_id.send("Identifiant utilisateur : {0}, {1}."
                                                  					.format(id_co_int, infos_connexion).encode())
                                                  			if msg_recu == "fin":
                                                  				serveur_lance = False
                                                  			msg_recu = ""
                                                  
                                                  print("Fermeture des connexions. Appuyer sur une touche pour continuer . . .")
                                                  wait = input()
                                                  for client in clients_connectes:
                                                  	client.close()
                                                  connexion_principale.close()



                                                  • Partager sur Facebook
                                                  • Partager sur Twitter

                                                  Probleme echange client serveur

                                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                  • Editeur
                                                  • Markdown