【问题标题】:Socket error "IP address not valid in its context" - Python套接字错误“IP地址在其上下文中无效” - Python
【发布时间】:2011-06-07 03:21:18
【问题描述】:

我正在使用 Python 2.6Windows Server 2008

服务器有两个 IP 地址,1 个内部,1 个外部


我需要 Python 来使用外部 IP 地址,但这样做时我得到了这个:

socket.error: [错误 10049] 请求的地址在其上下文中无效


更准确地说,我正在使用 Django 的 runserver 命令以供熟悉它的人使用


编辑:

ipconfig只调出内部IP,而我运行的所有服务都使用外部IP,没有任何问题!


有什么想法吗?

【问题讨论】:

  • 当您尝试绑定到本地计算机上未分配给计算机上任何适配器的地址时,这是 Windows 给出的错误。如果ipconfig 没有显示,则无法绑定。也许您现在想绑定到机器上的任何地址? (如果外部地址被 NAT'ed 到您的内部地址,绑定到内部地址就足够了。)
  • @Rosh:你应该这样回答。

标签: python windows django networking windows-server-2008


【解决方案1】:

当您尝试绑定到本地计算机上未分配给计算机上任何适配器的地址时,这是 Windows 给出的错误。如果ipconfig 没有显示,则无法绑定。

如果外部地址位于路由器上,该路由器将来自它的请求通过 NAT 转换为服务器的内部地址,则您无法绑定到它,因为它位于另一台机器上。大概就是这样。您可能希望绑定到 socket.INADDR_ANY(或其 Django 等效项)。这将绑定到当前机器上的所有地址。

另请注意,如果外部地址被 NAT 转换为您的内部地址,则绑定到内部地址就足够了。

【讨论】:

  • 当远程地址+端口有问题(如端口==0)时,尝试连接、发送到、连接叶时也会出现该错误。如果在未通过 SetSocketOptions 设置套接字时发送到多播地址,SendTo 可能会返回此错误。 Windows 在太多情况下使用此错误,恕我直言。
猜你喜欢
  • 2014-12-31
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
相关资源
最近更新 更多