Próbuję uzyskać adres IP sieci LAN urządzenia, na którym działa program i porównać go z adresami IP przekazanymi do niego przez UDP.Python Uzyskiwanie adresu IP urządzenia LAN w systemie Ubuntu
Jednak kiedy używam:
print str(socket.gethostbyname(socket.gethostname()))
Zwraca 127.0.0.1, który powinien być 192.168.1.9.
Przejrzałem maszynę Linux i jej adres IP portu lo (loopBack)? Nie wiem dokładnie, co to jest, ale powinien dostać adres IP eth0.
Znalazłem, że mogę podprocesować polecenie bash "ifconfig eth0", ale to zwraca duży blok ciągu. Potrafię przetworzyć to, czego potrzebuję, ale będzie to działać około 3 razy na sekundę na beaglebone, więc chciałbym, żeby był trochę bardziej skuteczny.
Czy istnieje bardziej elegancki sposób robienia tego?
Czy mogę po prostu zmienić cel gethostname?
Dlaczego jest kierowany na port lo?
Dziękuję za twoją pomoc.
Jeśli ktoś próbuje to zrobić i ma serwer, który zawsze będzie miał dostęp do Internetu, istnieje strona http://code.activestate.com/recipes/439094-get-the-ip-address-associated-with-a -network-inter/ma sposób, który rozwiązał problem. Ale mój serwer nie zawsze będzie miał internet, więc nie będę mógł go użyć. – Poodimizer