Socket do virtual machine

0

Witam serdecznie,

mam problem z połączeniem się poprzez clienta napisanego w Javie na windowsie z serverem C który stoi na VM ubuntu.

Ifconfig do spojrzenia w załączniku.
Moj socket clienta wyglada następująco:
Socket s = new Socket("10.0.2.15",4444);

Próbowałem również umieścić localhost zamiast ip tj. 127.0.0.1:4444 - z Windowsa nie mogę nawiązać połączenia. Przy odpaleniu clienta na ubuntu dochodzi do połączenia tylko w tej opcji.

Ktoś wspomoże mnie radą bardziej doświadczonego programisty?

1
  1. Musisz mieć w VM wybraną odpowiednią opcję udostpęniania sieci (chociaż to chyba jest by default robione teraz (NAT przykładowo).
  2. Program w c musi podpinac się do odpowiedniego interfejsu.
    zobacz netstat -tln i znajdź jak wygląda wpis pod 4444. jak jest tam 127.0.0.1:4444 to kiepsko. Źle nasłuchuje. Pytanie czy mozna to zmienić (jakimiś opcjami programu). Powinno być np. 0.0.0.0:4444 lub :::4444 ewntualnie to 10.x.x.x:4444.
  3. Wyłacz firewall w windows i zobacz czy jest lepiej. Jeśli tak to po włączeniu dodaj reguły.
1

Pytanie jest podstawowe - czy to kwestia samej Javy i obsługi sieci, czy ogólnie komunikacji w ramach wirtualek.
Czy pingi chodzą między tymi hostami?
Na czym stoi wirtualka - VirtualBox czy coś inego?

Ja sam niedawno się męczyłem z czymś podobnym (aczkolwiek odwrotnym) - Na linuksie miałem postawionego VirtualBox'a, a w nim kilka wirtualek z Windowsami. I jakoś nie mogły się one ze sobą skomunikować.
Pierwsza sprawa to ustawienia firewalla. Najlepiej go w ogóle wyłączyć.
A po drugie (poniżej wklejam przykładowy screen znaleziony w necie) ustaw na kliencie tryb karty sieciowej na "bridged" oraz korzystając ze strzałek obok adresu MAC - zmień sobie tak, żeby wirtualka miała innego MAC niż host. W ten sposób, patrząc z perspektywy routera, będą do niego podpięte dwa niezależne kompy, oba otrzymają niezależnie od siebie adres z DHCP. Oczywiście te zmiany (a w szczególności generowanie MAC) rób na wyłączonej wirtualce.

screenshot-20181212221229.png

1

Dzięki chłopaki za odpowiedzi - oboje mi pomogliście!

Wróciłem do tego projektu po jakimś czasie i dzięki wskazówce jarekr000000 dt. netstat -tln - doszło do mnie, że w którymś momencie przy tych wszystkich próbach zmieniłem ip servera na 127.0.0.1 - więc siłą rzeczy nie mogło chyba to działać. Połączyć się jednak dalej nie mogłem mimo prawidłowych adresów po obu stronach.

cerrato - zmiana na VirtualBoxie w Network/BridgeAdapter (dokładnie jak na screenie) pozwoliła mi ustanowić połączenie między cientem a serverem!!

Stawiam obu wirtualnego browara :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1