L'adresse demandée n'est pas valide dans son contexte de l'erreur
J'ai suivi un tutoriel appelé "Black Hat Python" et a obtenu un "l'adresse demandée n'est pas valide dans son contexte" d'erreur. Je suis IDE Python version: 2.7.12
C'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 <module>
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
>>>
- De vérifier la
bind_ip
pour voir si elle est de la bonne ip que vous êtes la liaison à l'aide deifconfig
(linux) ouipconfig
(windows). Essayez""
pourbind_ip
de se lier à n'importe quelle interface. Aussi, ne pas utiliser le port 21 -- il est réservé pour le FTP. L'utilisation d'un nombre arbitraire de 1024 à 49151. - Votre adresse IP local ou distant? Si la télécommande, utilisez .méthode connect()
Vous devez vous connecter pour publier un commentaire.
Vous essayez de se lier à une adresse IP qui n'est pas réellement affecté à votre interface réseau:
Voir le Windows Sockets Codes d'Erreur documentation:
Qui peut être une adresse IP de votre routeur est à l'écoute à l'avant à l'aide de NAT (network address translation) pour parler à votre ordinateur, mais cela ne signifie pas que votre ordinateur ne voit que l'adresse IP.
Lier soit à
0.0.0.0
, qui permettra d'utiliser toutes les adresses IP disponibles (à la fois localhost et tout public adresses configuré):ou utiliser n'importe quelle adresse que votre ordinateur est configuré pour, exécuter
ipconfig /all
dans une console pour voir la configuration de votre réseau.Vous probablement ne voulez pas utiliser les ports < 1024; ceux-ci sont réservés pour les processus s'exécutant en tant que root uniquement. Vous aurez à choisir un nombre plus élevé que cela, si vous souhaitez exécuter un processus non privilégié (et dans la majorité des tutoriels, c'est exactement ce que vous voulez):
Je crois spécifiques tutoriel vous êtes utilisations suivantes
BIND_IP = '0.0.0.0'
etBIND_PORT = 9090
.