[英]ServerSocket.accept() on host does not accept connection originating in guest VM
在我的 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 代碼。 任何想法為什么或如何進一步調試?
我可以解決我的問題。 確實是主機的Windows防火牆設置有問題。 為我用來運行服務器的特定 JDK 的javaw.exe
添加入站規則后,可以成功建立連接。
向公司 IT 大喊大叫,他們不僅讓我快速禁用防火牆以確定這是否是問題的原因。 :\\
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.