簡體   English   中英

主機上的 ServerSocket.accept() 不接受源自來賓 VM 的連接

[英]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 中看到了適當的數據包: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM