[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
- Citizen code python avis - Accueil - Outils
- \R python ✓ - Forum Python
- Error 2002 (hy000): can't connect to local server through socket '/run/mysqld/mysqld.sock' (2) ✓ - Forum Linux / Unix
- Mot secret python pix ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
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