【问题标题】:Can't connect to 0.0.0.0 under Windows in GAE development modeGAE开发模式下Windows下无法连接0.0.0.0
【发布时间】:2014-01-11 01:51:25
【问题描述】:

我们有一个 java 应用程序通过 GAE 的图像服务提供图像。在 Linux 机器下用 eclipse 测试它很完美。但是在 Windows 机器 (Vista) 中测试完全相同的代码时,在引入图像时会失败。图片网址如下:

http://0.0.0.0:8888/_ah/img/encoded_gs_key:cHJvZmlsZXBpY3R1cmVzLzVVTkhjc1IybjktQTlrckdiZWZfTkE

我认为这与 0.0.0.0 地址有关,因为 Linux 将其解析为 127.0.0.1,但 Windows 甚至无法 ping 通它。有没有办法让 0.0.0.0 在 Windows 下工作?有什么办法可以改变GAE开发模式用来解析图片的0.0.0.0地址吗?

【问题讨论】:

    标签: windows google-app-engine gae-eclipse-plugin


    【解决方案1】:

    我认为在这种情况下,Linux 做错了——我认为它试图通过将 0.0.0.0 路由到 127.0.0.1 来帮助工作,但实际上 0.0.0.0 不是- 可路由地址,Windows 没有正确路由它。

    请看这里:http://en.wikipedia.org/wiki/0.0.0.0

    【讨论】:

    • 好的,我同意。我现在的问题是如何让 GAE 插件在模拟图像服务时放置一个有效的 IP 地址。
    【解决方案2】:

    简短回答:我同意八位大师的观点。它在 Linux 上工作的事实可能只是运气。 (虽然我确信 Linux 网络人员会声称 Windows 完全错了,但我离题了)。

    我曾经遇到过将一些代码从 Linux 移植到 Windows 的类似问题。我的主线程将向在另一个线程的 recvfrom 调用中阻塞的套接字的侦听地址发送一个空的 UDP 数据包。在阻塞 recvfrom() 调用上唤醒的线程会注意到退出条件并立即返回。

    Linux 上的代码有效。主线程将调用getsockname 来获取套接字的本地监听地址并向其发送数据包。当套接字绑定在 INADDR_ANY(这意味着“所有适配器”,但被编码为 0.0.0.0)时,它只是有点工作。发送到 0.0.0.0 将到达监听套接字。

    但是这个代码路径在到 Windows 的端口上被炸毁了。修复方法是检测监听地址何时为 0.0.0.0 并将其切换为发送到 127.0.0.1(本地主机)。一切都很好。

    所以如果修复生成 URL 的代码不起作用,这里有两个我想到的解决方案:

    1.向路由表添加路由(不起作用)

    现在我开始考虑是否可以只向路由表添加一条路由。从 cmd 行:

    route add 0.0.0.0 MASK 255.255.255.255 10.120.30.194
    

    这实际上成功地为表添加了一条路由......

    但是,唉,它似乎并没有像我想象的那样工作......

    2。运行代理服务器

    我认为这可能适用于本地调试。您可以将Fiddler 与您的代码一起运行。在 Fiddler 中实现一个脚本/规则,将 0.0.0.0 转换为 127.0.0.1。

    你没有说下载的内容。如果是浏览器,那么GreaseMonkey 之类的内容可能是您的朋友。

    【讨论】:

    • 太棒了!我最终使用了 FoxyProxy。我更喜欢在 GAE 插件上更改它的方法,但也许 0.0.0.0 是硬编码的。
    猜你喜欢
    • 2016-04-23
    • 2022-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 2020-03-06
    • 2018-05-19
    相关资源
    最近更新 更多