tomminno
29-09-2007, 10:31
Ho un problema nel reperire correttamente l'ip della macchina da quando ho installato VMWare. Per la macchina fisica l'ip è 192.168.0.5, quella virtuale risponde al 192.168.0.6.
Per le comunicazioni limitate allo stesso hardware cioè tra OS vero (XP) e virtualizzato (XP) ottengo che il client di una comunicazione ha sempre ip 192.168.218.1 che non è un ip esistente (questo accade sia che il client sia sulla macchina virtuale e il server su quella reale o viceversa).
Questo è quello che capita:
--Server ip:192.168.0.5 SendUDPBroadcast
--Client ip:192.168.0.6 recvfrom->campo from=192.168.218.1
e viceversa
--Server ip:192.168.0.6 SendUDPBroadcast
--Client ip:192.168.0.5 recvfrom->campo from=192.168.218.1
-------------------------------------------------------------
--Server ip:192.168.0.5 Listen
--Client ip:192.168.0.6 connect 192.168.0.5
--Server getpeername->192.168.218.1
e viceversa
--Server ip:192.168.0.6 Listen
--Client ip:192.168.0.5 connect 192.168.0.6
--Server getpeername->192.168.218.1
Per le comunicazioni con altri hardware capita spesso (ma non sempre) che la chiamata a getpeername sul socket aperto restituisca l'ip inesistente.
Le comunicazioni funzionano regolarmente. Il problema di base è che il client "riceve" l'ip del server utilizzando l'ip ottenuto da recvfrom e se questo è inesistente la comunicazione non può instaurarsi.
Da che può dipendere e come si può risolvere un problema simile?
Per le comunicazioni limitate allo stesso hardware cioè tra OS vero (XP) e virtualizzato (XP) ottengo che il client di una comunicazione ha sempre ip 192.168.218.1 che non è un ip esistente (questo accade sia che il client sia sulla macchina virtuale e il server su quella reale o viceversa).
Questo è quello che capita:
--Server ip:192.168.0.5 SendUDPBroadcast
--Client ip:192.168.0.6 recvfrom->campo from=192.168.218.1
e viceversa
--Server ip:192.168.0.6 SendUDPBroadcast
--Client ip:192.168.0.5 recvfrom->campo from=192.168.218.1
-------------------------------------------------------------
--Server ip:192.168.0.5 Listen
--Client ip:192.168.0.6 connect 192.168.0.5
--Server getpeername->192.168.218.1
e viceversa
--Server ip:192.168.0.6 Listen
--Client ip:192.168.0.5 connect 192.168.0.6
--Server getpeername->192.168.218.1
Per le comunicazioni con altri hardware capita spesso (ma non sempre) che la chiamata a getpeername sul socket aperto restituisca l'ip inesistente.
Le comunicazioni funzionano regolarmente. Il problema di base è che il client "riceve" l'ip del server utilizzando l'ip ottenuto da recvfrom e se questo è inesistente la comunicazione non può instaurarsi.
Da che può dipendere e come si può risolvere un problema simile?