Problème chaines de caractères sur programme serveur
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:
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.") |
Problème chaines de caractères sur programme serveur
Bonsoir
La modification n'est pas acceptée en compilation
Code:
1 2 3 4
| File "C:\Users\MJFG\Documents\Michel\Python\serveur test client serveur.py", line 59
connexion.send(b"Vous êtes connecté. Envoyez vos messages.")
^
SyntaxError: bytes can only contain ASCII literal characters. |
En vous remerciant
Cordialement