Quindi sto cercando di ottenere l'indirizzo IP LAN della macchina su cui è in esecuzione il programma e confrontarlo con gli indirizzi IP passati tramite UDP.Python Ottenere l'indirizzo IP della LAN della macchina su Ubuntu
Tuttavia quando uso:
print str(socket.gethostbyname(socket.gethostname()))
Esso restituisce 127.0.0.1 che dovrebbe essere 192.168.1.9.
Ho controllato la macchina Linux e ho ottenuto l'indirizzo IP della porta lo (loopBack)? Non so esattamente cosa sia, ma dovrebbe essere l'indirizzo IP di eth0.
Ho scoperto che posso sottoprocesso il comando bash "ifconfig eth0" ma che restituisce un grosso blocco di una stringa. Posso elaborarlo in base a ciò che mi serve, ma questo verrà eseguito circa 3 volte al secondo su un beaglebone, quindi mi piacerebbe che fosse un po 'più efficace.
C'è un modo più elegante per farlo?
Posso solo modificare l'obiettivo di gethostname?
Perché è il targeting per lo porto?
Grazie per il vostro aiuto.
Se qualcuno sta provando a fare questo e hanno un server che avrà sempre accesso a Internet c'è il sito http://code.activestate.com/recipes/439094-get-the-ip-ad-ress-associate-with-a -network-inter/che ha risolto il problema. Ma il mio server non avrà sempre internet quindi non posso usarlo. – Poodimizer