L’adresse demandée n’est pas valide dans son erreur de contexte

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 .