我们有一个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地址?
答案 0 :(得分:4)
我认为在这种情况下,Linux做错了 - 我认为它试图通过将0.0.0.0路由到127.0.0.1以帮助工作有所帮助,但实际上0.0.0.0是非-routable地址和Windows正确无法路由它。
答案 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之类的东西可能就是你的朋友。