在GAE开发模式下无法连接到Windows下的0.0.0.0

时间:2014-01-11 01:51:25

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

我们有一个java应用程序通过GAE的Image Service提供图像。在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地址?

2 个答案:

答案 0 :(得分:4)

我认为在这种情况下,Linux做错了 - 我认为它试图通过将0.0.0.0路由到127.0.0.1以帮助工作有所帮助,但实际上0.0.0.0是非-routable地址和Windows正确无法路由它。

见这里:http://en.wikipedia.org/wiki/0.0.0.0

答案 1 :(得分:1)

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

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

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

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

因此,如果修复生成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之类的东西可能就是你的朋友。