[Python] socket et encore l'encodage
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour, je programme un serveur de controle à distance en python (qui execute des commande dos et envoi le résultat au client)
Il y a un problème au niveau de l'envoi des donnees tout est décalé (voir image) :
http://img11.hostingpics.net/pics/244283serv.png
Au début je me suis dit que cela venais du client telnet de windows mais avec putty c'est pareil par contre dans la console de python tous est OK
Il y a un problème au niveau de l'envoi des donnees tout est décalé (voir image) :
http://img11.hostingpics.net/pics/244283serv.png
Au début je me suis dit que cela venais du client telnet de windows mais avec putty c'est pareil par contre dans la console de python tous est OK
A voir également:
- [Python] socket et encore l'encodage
- Encodage ascii - Guide
- Citizen code python - Accueil - Outils
- Citizen code python solution - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Le flux d’octets était en erreur par rapport à l’encodage de caractères déclaré. la déclaration d’encodage des caractères était peut être incorrecte. ✓ - Forum Webmastering
Pour le "encode" voila l'erreur :
conn.send(execute.encode("utf-8"))
UnicodeDecodeError: 'ascii' codec can't decode byte 0x82 in position 52: ordinal not in range(128)
data = conn.recv(2048)
if not data: break
if data != "\r\n":
cmd = cmd + data
else:
print " >> " + cmd
execute = os.popen(cmd).read()
print execute
conn.send(execute.decode("utf-8"))
conn.send(" >> ")
cmd = ""
import socket, sys, os
HOST = "192.168.1.142"
PORT = 50000
conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
msgacceuil = "Vous êtes connecté, envoyez vos commandes"
commcli = ""
try :
conn.bind((HOST,PORT))
except socket.error:
print("La liaison n'as pu être établie")
sys.exit()
while 1 :
print("Serveur prêt, en attente de clients...")
conn.listen(2)
connexion, addr = conn.accept()
print("Client %s connecté sur le port %s" % (addr[0], addr[1]))
connexion.send(msgacceuil.encode("Utf8"))
data = connexion.recv(2048).decode("Utf8")
while 1:
if data !="\r\n":
commcli += data
else :
print(">> %s" % commcli)
if commcli.upper() == "EXIT" or commcli == "":
break
execute = os.popen(commcli).read()
print(execute)
connexion.send(execute.encode("Utf8"))
commcli = ""
data = connexion.recv(2048).decode("Utf8")
connexion.send('FIN'.encode("Utf8"))
print("Fin de la connexion")
connexion.close()
Par contre il est interessant aussi d'utiliser python en client et non pas Putty ou telnet