+-
python-请求的地址在其上下文错误中无效
我正在遵循一个名为“ Black Hat Python”的教程,并收到“请求的地址在其上下文中无效”错误.我是Python IDE版本:2.7.12
这是我的代码:

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()

这是我的错误:

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
>>> 
最佳答案
您正在尝试绑定到一个实际上未分配给网络接口的IP地址:

bind_ip = "184.168.237.1"

参见Windows Sockets Error Codes documentation:

WSAEADDRNOTAVAIL 10049
Cannot assign requested address.

The requested address is not valid in its context. This normally results from an attempt to bind to an address that is not valid for the local computer.

这可能是路由器在使用NAT(网络地址转换)与您的计算机进行对话之前正在侦听的IP地址,但这并不意味着您的计算机完全看不到该IP地址.

绑定到0.0.0.0,这将使用所有可用的IP地址(本地主机和配置的任何公共地址):

bind_ip = "0.0.0.0"

或使用您的计算机配置的任何地址;在控制台中运行ipconfig / all以查看您的网络配置.

您可能也不想使用端口< 1024;这些保留给仅以root用户身份运行的进程.如果要运行无特权的进程(在大多数教程程序中,这正是您想要的),则必须选择比该数字更大的数字:

port = 5021  # arbitrary port number higher than 1023

我相信您要遵循的特定教程使用BIND_IP =’0.0.0.0’和BIND_PORT = 9090.

点击查看更多相关文章

转载注明原文:python-请求的地址在其上下文错误中无效 - 乐贴网