je suis actuellement sous python 3.6 et j'aimerai faire un reverse TCP(serveur et client)mais j'ai regarder de nombreux tuto qui sont touse sous python 2.6 et ca ne marche pas.
non je n'ai pas abandonné mais c'est juste que j'ai essaye plusieurs script que j'ai trouver sur internet mais il y en a aucun qui marche apres les deux script serveur et client je les ai lancer sur la meme machine peut etre que je devrais essayer sur une machine virtuel ?
le probleme vient de mon client surtout de la boucle while je ne sais pas trop comment je peux les resoudre je ne comprend pas encore bien les message d'erreur,
Fais l'effort d'être plus explicite. «Ça ne marche pas» ne veut strictement rien dire en programmation. Si tu as une erreur, quelle est-elle et à quelle ligne survient-elle? Si tu n'en as pas, qu'est-ce qui te fait dire que ça ne «marche pas»?
Dans un même espace des noms, il ne peut y avoir qu'une seule occurrence d'un nom. Donc comme Defal a essayé de te l'expliquer, il ne faut pas donner le nom socket à ta variable (ligne 7) alors que tu as déjà un objet qui s'appelle socket (le module en ligne 2). En faisant ça, tu as retiré la référence à ton module et donc tu ne peux plus l'utiliser.
merci pour vos aide le probleme ce n'est pas le nom socket mais meme en utilisant 2 IDLE différente je trouve des probleme différent voici le premier
Traceback (most recent call last):
File "C:\Users\client2.py", line 10, in <module>
s.send("connected")
TypeError: a bytes-like object is required, not 'str'
et voici le deuxieme
File "C:\Users\client2.py", line 12, in <module>
msg = input(">>")
File "<string>", line 1, in <module>
NameError: name 'ok' is not defined
Voilà, ton message est plus constructif et donc on peut t'aider plus facilement.
La première erreur vient du fait que la méthode send attend un objet de type bytes alors que toi tu lui fournis un objet de type str. N'ayant jamais fait ça je ne fais que spéculer, mais il me semble que tu dois utiliser la méthode encode des chaînes de caractères pour avoir un objet bytes (en indiquant l'encodage de la chaîne):
socket.send("connected".encode(encoding="utf-8"))
while True:
msg = input(">>")
print(msg)
socket.send(msg.encode(encoding="utf-8"))
La seconde erreur vient du fait que tu utilises une v2 de python. Dans cette version, input évalue directement ce que tu entres. Donc si tu mets ok, la fonction ne va pas renvoyer une chaîne de caractères, mais va chercher une variable du même nom. Ce problème n'existe pas dans la v3 car la fonction a été modifiée pour toujours renvoyer une chaîne de caractères (donc aucune évaluation).
merci pour les info j'ai utiliser l'idle de python3.6 et maintanant un message d'erreur apparait au serveur
voici le code
#server.py
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 15555))
while True:
s.listen(5)
client, address = s.accept()
response = client.recv(255)
if response != "":
print (response)
et voici le message d'erreur
Traceback (most recent call last):
File "C:\Users\server2.py", line 6, in <module>
s.bind(('', 15555))
OSError: [WinError 10048] Une seule utilisation de chaque adresse de socket (protocole/adresse réseau/port) est habituellement autorisée
× 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.
Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie.