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

Java 为什么HttpURLConnection上的getInputStream与VirtualBox服务器的连接会挂起,除非我正在积极使用VM?,java,virtualbox,httpurlconnection,freeze,Java,Virtualbox,Httpurlconnection,Freeze,所以我有一个通过VirtualBox运行的虚拟机。这是Ubuntu,我对我访问的用户没有sudo权限。有一个正在运行的服务器允许我通过VM上的localhost/page.php访问页面。我在VirtualBox中将网络首选项设置为桥接,并且我的主机(MacBook Pro)位于我的WiFi网络上 现在我正试图在我的主机上编写一个Java程序,访问VM服务器并读取页面。我使用HttpURLConnection,然后使用getInputStream,并通过BufferedReader逐行查看结果。

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

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

我花了很多时间在线搜索,并尝试将cache属性设置为false,限制内容长度,使用NAT模式进行端口转发,将close connection属性设置为true,使用openstream。没有什么能解决我的问题,这看起来很奇怪


TL;DR我必须移动鼠标或键入VirtualBox来宾计算机,以便在主机上运行的程序能够使用HttpURLConnection getInputStream访问服务器(本地到来宾,桥接到主机),并从中读取信息

这听起来像是一个熵问题,请在运行测试时尝试将-Djava.security.egd=file:/dev//uradom添加到启动中

在假设这是Java问题之前,您是否尝试使用MacBook Pro的web浏览器建立连接?和/或从终端上的
wget
?是的,我使用了浏览器和curl,每隔一次它就工作,每一次都超时或挂起。我不确定这是Java还是VM的问题,所以我对两者都做了标记。这样,您可能会得到更好的帮助