Bonjour

Dans le programme serveur suivant un message d'anomalie apparait comme suit

Traceback (most recent call last):
File "C:\Users\MJFG\Documents\Michel\Python\serveur test client serveur.py", line 59, in <module>
connexion.send("Vous êtes connecté. Envoyez vos messages.")
TypeError: a bytes-like object is required, not 'str'

L'instruction incriminée est la dernière du programme

J'ai appliqué toutes les corrections rencontrées sur les différents forum mais l'anomalie persiste.

Si d'aucun me suggère une solution bien expliquée je l'en remercie d'avance.

Cordialement




Code python : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
#Définition d'un serveur réseau gérant un système de CHAT simplifié.
 # Utilise les threads pour gérer les connexions clientes en parallèle.
 
HOST = '192.168.1.90'
PORT = 55132
 
import socket, sys, threading
 
class ThreadClient(threading.Thread):
    '''dérivation d'un objet thread pour gérer la connexion avec un client'''
    def __init__(self, conn):
        threading.Thread.__init__(self)
        self.connexion = conn
 
    def run(self):
        # Dialogue avec le client :
        nom = self.getName()        # Chaque thread possède un nom
        while 1:
            msgClient = self.connexion.recv(1024)
            if msgClient.upper() == "FIN" or msgClient =="":
                break
            message = "%s> %s" % (nom, msgClient)
            print (message)
            # Faire suivre le message à tous les autres clients :
            for cle in conn_client:
                if cle != nom:      # ne pas le renvoyer à l'émetteur
                    conn_client[cle].send(message)
 
        # Fermeture de la connexion :
        self.connexion.close()      # couper la connexion côté serveur
        del conn_client[nom]        # supprimer son entrée dans le dictionnaire
        print ("Client %s déconnecté." % nom)
        # Le thread se termine ici
 
# Initialisation du serveur - Mise en place du socket :
mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    mySocket.bind((HOST, PORT))
except socket.error:
    print ("La liaison du socket à l'adresse choisie a échoué.")
    sys.exit()
print ("Serveur prêt, en attente de requêtes ...")
mySocket.listen(5)
 
# Attente et prise en charge des connexions demandées par les clients :
conn_client = {}                # dictionnaire des connexions clients
while 1:
   connexion, adresse = mySocket.accept()
    # Créer un nouvel objet thread pour gérer la connexion :
   th = ThreadClient(connexion)
   th.start()
    # Mémoriser la connexion dans le dictionnaire :
   it = th.getName()        # identifiant du thread
   conn_client[it] = connexion
   print ("Client %s connecté, adresse IP %s, port %s." %\
           (it, adresse[0], adresse[1]))
    # Dialogue avec le client :
 
   connexion.send("Vous êtes connecté. Envoyez vos messages.")