В моем приложении 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();
...
В виртуальной машине я запускаю клиентское приложение (черный ящик), которое пытается подключиться к указанному серверу. По неизвестной причине соединение не установлено, и accept никогда не возвращается.
Я знаю, что клиентское приложение пытается подключиться, поскольку я вижу соответствующие пакеты в Wireshark:
Я не могу запустить одно и то же клиентское приложение на своем хост-компьютере, но я могу успешно установить TCP-соединение с хоста с nc
, поэтому я знаю, что сервер фактически прослушивает.
ВМ и хост находятся в подсети 10.11.1.0. Хост имеет IP 10.11.1.1, ВМ 10.11.1.68. Они могут пинговать друг друга.
Но все же по какой-то причине TCP-пакеты, похоже, не приходят в мой Java-код. Любые идеи, почему или как я мог бы далее отладить это?