2016-04-26 5 views
1

Я пишу чат с помощью crossbar.io. У нас есть несколько узлов чата. Мне нужно написать статистику о каждом из узлов, поэтому мне нужно получить имя хоста, где выполняется конкретный узел.Как получить имя хоста Crossbar.io?

Возможно ли получить имя хоста из экземпляра компонента?

Я использую последнюю версию перекладины/autobahn и python 3.4.

Ожидайте получения - 127.0.0.1, если я использую локальную среду.

ответ

1

Просто использовать библиотеку сокетов:

import socket 

hostname = socket.gethostname() 
+0

Это не работает для этого, был неправильно имя хоста –

+0

@AleksandrYarushevsky Что вы имеете в виду под «неправильным именем хоста»? – user312016

+0

Теперь я запускаю на localhost, и я получил 172.17.0.1 вместо 127.0.0.1 –

1

В случае вашей машины имеет разрешимы имя хоста попробуйте:

import socket socket.gethostbyname(socket.getfqdn())

Update. Это более полное решение, должно работать нормально со всеми ОС:

import socket
print [l for l in ([ip for ip in socket.gethostbyname_ex( socket.gethostname())[2] if not ip.startswith('127.')][:1], [[(s.connect(('8.8.8.8', 53)), s.getsockname()[0], s.close() ) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1]]) if l][0][0]

+0

Тот же результат получил 172.17.0.1 вместо 127.0.0.1 –

Смежные вопросы