Je suivais un tutoriel appelé “Black Hat Python” et j’ai reçu l’erreur “l’adresse demandée n’est pas valide dans son contexte”. Je suis Python IDE version: 2.7.12 Ceci est mon code:
import socket import threading bind_ip = "184.168.237.1" bind_port = 21 server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind((bind_ip,bind_port)) server.listen(5) print "[*] Listening on %s:%d" % (bind_ip,bind_port) def handle_client(client_socket): request = client_socket.rev(1024) print "[*] Recieved: %s" % request client_socket.close() while True: client,addr = server.accept() print "[*] Accepted connection from: %s:%d" % (addr[0],addr[1]) client_handler = threading.Thread(target=handle_client,args=(client,)) client_handler.start()
et c’est mon erreur:
Traceback (most recent call last): File "C:/Python34/learning hacking.py", line 9, in server.bind((bind_ip,bind_port)) File "C:\Python27\lib\socket.py", line 228, in meth return getattr(self._sock,name)(*args) error: [Errno 10049] The requested address is not valid in its context >>>
Vous essayez de vous connecter à une adresse IP qui n’est pas réellement affectée à votre interface réseau:
bind_ip = "184.168.237.1"
Consultez la documentation sur les codes d’erreur Windows Sockets :
WSAEADDRNOTAVAIL 10049
Impossible d’atsortingbuer l’adresse demandée.L’adresse demandée n’est pas valide dans son contexte. Cela résulte normalement d’une tentative de liaison à une adresse non valide pour l’ordinateur local.
Cela peut être une adresse IP que votre routeur écoute avant d’utiliser NAT (traduction d’adresse réseau) pour parler à votre ordinateur, mais cela ne signifie pas que votre ordinateur voit cette adresse IP.
Soit lier à 0.0.0.0
, qui utilisera toutes les adresses IP disponibles (localhost et toutes les adresses publiques configurées):
bind_ip = "0.0.0.0"
ou utiliser une adresse pour laquelle votre ordinateur est configuré; lancez ipconfig /all
dans une console pour voir votre configuration réseau.
Vous ne voulez probablement pas non plus utiliser les ports <1024; ceux-ci sont réservés aux processus exécutés en tant que root uniquement. Vous devrez choisir un nombre plus élevé que celui-ci si vous souhaitez exécuter un processus non privilégié (et dans la plupart des programmes de didacticiels, c'est exactement ce que vous voulez):
port = 5021 # arbitrary port number higher than 1023
Je crois que le tutoriel spécifique que vous suivez utilise BIND_IP = '0.0.0.0'
et BIND_PORT = 9090
.