为什么 getInputStream 上的 HttpURLConnection 到 VirtualBox 服务器会挂起,除非我正在积极使用 VM?

Why does getInputStream on HttpURLConnection to VirtualBox server hang unless I am actively using the VM?

所以我有一个虚拟机 运行ning 通过 VirtualBox。它是 Ubuntu,我对我有权访问的用户没有 sudo 权限。有一个服务器 运行ning 允许我通过虚拟机上的 localhost/page.php 访问页面。我已经在 VirtualBox 中将网络首选项设置为桥接,并且我的主机 (MacBook Pro) 在我的 WiFi 网络上。

现在我正在尝试在我的主机上编写一个 Java 程序,它访问 VM 服务器并读取页面。我正在使用 HttpURLConnection,然后使用 getInputStream 并通过 BufferedReader 逐行查看结果。我遇到的问题是我的 java 程序(我通过主机上的 Eclipse 运行 挂起)除非我继续我的 VM 并移动鼠标或键入或执行某些操作,然后它继续.而且 VM 不会锁定屏幕或有任何电源管理问题,它始终处于运行状态。

我花了很多时间在网上搜索并尝试将缓存 属性 设置为 false,限制内容长度,改用带端口转发的 NAT 模式,设置关闭连接 属性 为真,改为使用 openstream。没有什么能解决我的问题,这看起来很奇怪。

TL;DR 我必须移动我的鼠标或在 VirtualBox 客户机中输入一个程序 运行ning 在我的主机上才能访问服务器(来宾本地,桥接到主机),使用 HttpURLConnection getInputStream,并从中读取信息。

这听起来像是一个熵问题,尝试在 运行 你的测试

时将 -Djava.security.egd=file:/dev/./urandom 添加到你的启动中