在我的Java应用程序中,我有以下代码:
_serverSocket = new ServerSocket();
_serverSocket.setReuseAddress(true);
_serverSocket.bind(new InetSocketAddress(port));
// _serverSocket = ServerSocket[addr=0.0.0.0/0.0.0.0,localport=33202]
_socket = _serverSocket.accept();
...
在VM中,我启动一个(黑盒)客户端应用程序,尝试连接到上述服务器。出于未知原因,没有建立连接并且接受永不返回。
我知道客户端应用程序正在尝试连接,因为我在Wireshark中看到适当的数据包:
我无法在主机上启动相同的客户端应用程序,但可以使用nc
从主机成功建立TCP连接,因此我知道服务器实际上正在侦听。
VM和主机位于10.11.1.0子网中。主机具有IP 10.11.1.1,VM 10.11.1.68。他们可以互相ping通。
但是,由于某种原因,TCP数据包似乎没有到达我的Java代码。任何想法,为什么或如何进一步调试呢?
答案 0 :(得分:0)
我可以解决我的问题。主机的Windows防火墙设置确实存在问题。在为我用来运行服务器的特定JDK的javaw.exe
添加入站规则后,可以成功建立连接。
向公司IT部门大声疾呼,不仅让我快速禁用了防火墙,以确定是否是问题的原因。 :\