2015-10-30 3 views
1

im пытается подключиться к локально размещенному брокеру HiveMQ с использованием виртуальной машины RaspberryPi (с использованием виртуальной машины VM VirtualBox). im, используя Mqtt.fx, а также второго клиента, чтобы посмотреть, получают ли опубликованные сообщения.Ошибка сокета: Errno 111 Connection Refused

Я использовал «iot.eclipse.org», прежде чем попытался использовать локальный брокер hivemq, и он отлично работал. поэтому я не слишком уверен, в чем проблема. возможно, я просто что-то забыл.

im использование модуля paho mqtt. и мой код библиотеки сильно разорван отсюда: https://pypi.python.org/pypi/paho-mqtt

im используя библиотеку/модуль, а затем ссылаясь на это в другом .py файле. Это код из библиотеки/модуля:

import paho.mqtt.client as mqtt 

client = mqtt.Client()      

#Called on connection to server/broker 
def on_connect(client, userdata, rc):            
    print("connected with result code"+str(rc))         

#Called when new message published to subscribed topic 
def on_message(client, userdata, msg):   
    print("NEW PUBLISH: "+msg.topic+" "+str(msg.payload)) 

#configure connection to the broker 
def setup():          
    client.on_connect = on_connect 
    client.on_message = on_message 

#Subscribe 
def subscribe(topic): 
    print("subscribing to topic: " +topic) 
    client.subscribe(topic) 

#Connect to broker 
def connect(): 
    client.connect("127.0.0.1", 1883, 60) 

def publish(topic, msg): 
    client.publish(topic, msg) 

и это код, им на самом деле работает. Только 2 просто публикует:

import mqttLib as owly 

owly.setup() 
owly.connect() 
owly.publish("test/library", "test okay :)") 

num1 = input("1st number: ") 
num2 = input("2nd number: ") 
mult = num1 * num2 

owly.publish("test/mult", mult) 

Это сообщение я получаю после запуска его:

Traceback (most recent call last): 
    File "mqttTest.py", line 6, in <module> 
    owly.connect() 
    File "/home/rpi/python/MQTT/mqttLib.py", line 27, in connect 
    client.connect("127.0.0.1", 1883, 60) 
    File "/usr/local/lib/python2.6/dist-packages/paho/mqtt/client.py", line 612, In connect 
    return self.reconnect() 
    File "/usr/local/lib/python2.6/dist-packages/paho/mqtt/client.py", line 732, in reconnect 
    sock = socket.create_connection((self._host, self._port)) 
    File "/usr/lib/python2.6/socket.py", line 514, in create_connection 
    raise error, msg 
    socket.error: [Errno 111] Connection refused 

Тот факт, что работает на удаленно размещенную брокера. и не меня смущает меня.

Я отключил большинство плагинов на HiveMQ и оставил плагин журнала сообщений на HiveMQ, поэтому я не думаю, что это что-то сделать с аутентификацией.

Я думаю, что виртуальная машина им используется ubuntu, если это помогает!

Благодарим вас за ваше время заранее!

EDITED

добавлен вывод Ifconfig:

[email protected]:~$ ifconfig 
eth0  Link encap:Ethernet HWaddr 08:00:27:5b:26:64 
     inet addr:192.168.56.101 Bcast:192.168.56.255 Mask:255.255.255.0 
     inet6 addr: fe80::a00:27ff:fe5b:2664/64 Scope:Link 
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
     RX packets:607 errors:0 dropped:0 overruns:0 frame:0 
     TX packets:12 errors:0 dropped:0 overruns:0 carrier:0 
     collisions:0 txqueuelen:1000 
     RX bytes:82290 (82.2 KB) TX bytes:1920 (1.9 KB) 

lo Link encap:Local Loopback 
     inet addr:127.0.0.1 Mask:255.0.0.0 
     inet6 addr: ::1/128 Scope:Host 
     UP LOOPBACK RUNNING MTU:16436 Metric:1 
     RX packets:0 errors:0 dropped:0 overruns:0 frame:0 
     TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 
     collisions:0 txqueuelen:0 
     RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) 

добавлен NETSTAT выход -anp:

[email protected]:~$ netstat -anp 
(Not all processes could be identified, non-owned process info 
will not be shown, you would have to be root to see it all.) 
Active Internet connections (servers and established) 
Proto Recv-Q Send-Q Local Address   Foreign Address   State PID/Program name 
udp  0  0 0.0.0.0:68    0.0.0.0:*        -    
Active UNIX domain sockets (servers and established) 
Proto RefCnt Flags  Type  State   I-Node PID/Program name Path 
unix 2  [ ACC ]  STREAM  LISTENING  5465  1017/lxterminal  /tmp/.lxterminal-socket:0.0-rpi 
unix 2  [ ACC ]  STREAM  LISTENING  2354  -     @/com/ubuntu/upstart 
unix 2  [ ACC ]  STREAM  LISTENING  3653  -     /tmp/.X11-unix/X0 
unix 2  [ ACC ]  STREAM  LISTENING  3652  -     @/tmp/.X11-unix/X0 
unix 2  [ ]   DGRAM     2462  -     @/org/kernel/udev/udevd 
unix 2  [ ACC ]  STREAM  LISTENING  4693  891/dbus-daemon  @/tmp/dbus-DYueHXFGGf 
unix 2  [ ACC ]  STREAM  LISTENING  4524  814/gnome-keyring-d /tmp/keyring-OM3Fh4/control 
unix 2  [ ACC ]  STREAM  LISTENING  5019  913/gam_server  @/tmp/fam-rpi- 
unix 2  [ ]   DGRAM     5068  -     @/org/freedesktop/hal/udev_event 
unix 2  [ ACC ]  STREAM  LISTENING  4680  -     /tmp/ssh-ESoUnvu822/agent.822 
unix 2  [ ACC ]  STREAM  LISTENING  5037  -     @/var/run/hald/dbus-ejQUT9OaXl 
unix 2  [ ACC ]  STREAM  LISTENING  4832  904/pcmanfm   /tmp/.pcmanfm-socket:0.0-rpi 
unix 2  [ ACC ]  STREAM  LISTENING  3497  -     /var/run/dbus/system_bus_socket 
unix 2  [ ACC ]  STREAM  LISTENING  4834  909/menu-cached  /tmp/.menu-cached-:0-rpi 
unix 2  [ ACC ]  STREAM  LISTENING  4966  814/gnome-keyring-d /tmp/keyring-OM3Fh4/pkcs11 
unix 6  [ ]   DGRAM     3504  -     /dev/log 
unix 2  [ ACC ]  STREAM  LISTENING  5014  814/gnome-keyring-d /tmp/keyring-OM3Fh4/ssh 
unix 2  [ ACC ]  STREAM  LISTENING  5042  -     @/var/run/hald/dbus-9woYq1KdE9 
unix 3  [ ]   STREAM  CONNECTED  5468  -     
unix 3  [ ]   STREAM  CONNECTED  5467  1017/lxterminal  
unix 3  [ ]   STREAM  CONNECTED  5463  -     @/tmp/.X11-unix/X0 
unix 3  [ ]   STREAM  CONNECTED  5462  1017/lxterminal  
unix 2  [ ]   DGRAM     5365  -     
unix 3  [ ]   STREAM  CONNECTED  5288  -     @/var/run/hald/dbus-ejQUT9OaXl 
unix 3  [ ]   STREAM  CONNECTED  5287  -     
unix 3  [ ]   STREAM  CONNECTED  5283  -     @/var/run/hald/dbus-ejQUT9OaXl 
unix 3  [ ]   STREAM  CONNECTED  5239  -     
unix 3  [ ]   STREAM  CONNECTED  5237  -     /var/run/dbus/system_bus_socket 
unix 3  [ ]   STREAM  CONNECTED  5236  -     
unix 3  [ ]   STREAM  CONNECTED  5144  -     @/var/run/hald/dbus-ejQUT9OaXl 
unix 3  [ ]   STREAM  CONNECTED  5134  -     
unix 3  [ ]   STREAM  CONNECTED  5063  -     @/var/run/hald/dbus-9woYq1KdE9 
unix 3  [ ]   STREAM  CONNECTED  5062  -      
unix 3  [ ]   STREAM  CONNECTED  5039  -     /var/run/dbus/system_bus_socket 
unix 3  [ ]   STREAM  CONNECTED  5038  -     
unix 3  [ ]   STREAM  CONNECTED  5025  -     /var/run/dbus/system_bus_socket 
unix 3  [ ]   STREAM  CONNECTED  5024  904/pcmanfm   
unix 3  [ ]   STREAM  CONNECTED  5022  913/gam_server  @/tmp/fam-rpi- 
unix 3  [ ]   STREAM  CONNECTED  5021  904/pcmanfm   
unix 2  [ ]   DGRAM     4969  814/gnome-keyring-d 
unix 3  [ ]   STREAM  CONNECTED  4964  891/dbus-daemon  @/tmp/dbus-DYueHXFGGf 
unix 3  [ ]   STREAM  CONNECTED  4963  814/gnome-keyring-d 
unix 3  [ ]   STREAM  CONNECTED  4842  909/menu-cached  /tmp/.menu-cached-:0-rpi 
unix 3  [ ]   STREAM  CONNECTED  4838  902/lxpanel   
unix 3  [ ]   STREAM  CONNECTED  4830  -     @/tmp/.X11-unix/X0 
unix 3  [ ]   STREAM  CONNECTED  4829  904/pcmanfm   
unix 3  [ ]   STREAM  CONNECTED  4796  -     @/tmp/.X11-unix/X0 
unix 3  [ ]   STREAM  CONNECTED  4795  901/xscreensaver  
unix 3  [ ]   STREAM  CONNECTED  4788  -     @/tmp/.X11-unix/X0 
unix 3  [ ]   STREAM  CONNECTED  4787  902/lxpanel   
unix 3  [ ]   STREAM  CONNECTED  4762  -     @/tmp/.X11-unix/X0 
unix 3  [ ]   STREAM  CONNECTED  4761  897/openbox   
unix 3  [ ]   STREAM  CONNECTED  4701  -     @/tmp/.X11-unix/X0 
unix 3  [ ]   STREAM  CONNECTED  4700  822/lxsession  
unix 3  [ ]   STREAM  CONNECTED  4697  -     @/tmp/.X11-unix/X0 
unix 3  [ ]   STREAM  CONNECTED  4696  890/dbus-launch  
unix 3  [ ]   STREAM  CONNECTED  4695  891/dbus-daemon  
unix 3  [ ]   STREAM  CONNECTED  4694  891/dbus-daemon  
unix 3  [ ]   STREAM  CONNECTED  4683  -     @/tmp/.X11-unix/X0 
unix 3  [ ]   STREAM  CONNECTED  4682  890/dbus-launch  
unix 3  [ ]   STREAM  CONNECTED  4673  -     @/tmp/.X11-unix/X0 
unix 3  [ ]   STREAM  CONNECTED  4672  882/VBoxClient  
unix 3  [ ]   STREAM  CONNECTED  4671  -     @/tmp/.X11-unix/X0 
unix 3  [ ]   STREAM  CONNECTED  4670  882/VBoxClient  
unix 3  [ ]   STREAM  CONNECTED  4666  -     @/tmp/.X11-unix/X0 
unix 3  [ ]   STREAM  CONNECTED  4665  875/VBoxClient  
unix 3  [ ]   STREAM  CONNECTED  4664  -     @/tmp/.X11-unix/X0 
unix 3  [ ]   STREAM  CONNECTED  4663  875/VBoxClient  
unix 3  [ ]   STREAM  CONNECTED  4656  -     @/tmp/.X11-unix/X0 
unix 3  [ ]   STREAM  CONNECTED  4655  866/VBoxClient  
unix 3  [ ]   STREAM  CONNECTED  4527  -     /var/run/dbus/system_bus_socket 
unix 3  [ ]   STREAM  CONNECTED  4526  -     
unix 3  [ ]   STREAM  CONNECTED  4440  -     /var/run/dbus/system_bus_socket 
unix 3  [ ]   STREAM  CONNECTED  4439  -     
unix 3  [ ]   STREAM  CONNECTED  4415  -     /var/run/dbus/system_bus_socket 
unix 3  [ ]   STREAM  CONNECTED  4414  -     
unix 3  [ ]   STREAM  CONNECTED  4402  -     /var/run/dbus/system_bus_socket 
unix 3  [ ]   STREAM  CONNECTED  4401  -     
unix 2  [ ]   DGRAM     4400  -     
unix 2  [ ]   DGRAM     4355  -     
unix 3  [ ]   STREAM  CONNECTED  4356  -     @/tmp/.X11-unix/X0 
unix 3  [ ]   STREAM  CONNECTED  3663  -     
unix 3  [ ]   STREAM  CONNECTED  3517  -     /var/run/dbus/system_bus_socket 
unix 3  [ ]   STREAM  CONNECTED  3516  -     
unix 3  [ ]   STREAM  CONNECTED  3515  -     
unix 3  [ ]   STREAM  CONNECTED  3514  -     
unix 3  [ ]   DGRAM     2494  -     
unix 3  [ ]   DGRAM     2493  -    unix 3  [ ]   STREAM  CONNECTED  2445  -     @/com/ubuntu/upstart 
unix 3  [ ]   STREAM  CONNECTED  2444  -     

г

+0

Просто чтобы уточнить, как брокер, так и клиенты все работают внутри виртуальной машины? – hardillb

+0

нет! извините, я не сказал! в VM работают 2 образца кода. MQTT.fx и HiveMQ работают за пределами VM (окна 7). – Jensen

+0

Тогда ip-адрес брокера не будет 127.0.0.1 (localhost), это будет то, что когда-либо был указан адрес шлюза, который был указан VM. Вам также может потребоваться добавить сеть «Только хост» на вашу виртуальную машину – hardillb

ответ

1

Как уже упоминалось в комментариях, 127.0.0.1 является локальный адрес виртуальной машины, что вам нужно se - это IP-адрес хоста, на котором работает брокера.

В этом случае брокер хост на хосте VM, вы можете получить адрес хоста VM с помощью ip route команды на виртуальной машине, то выход будет выглядеть примерно так:

default via 192.168.56.100 dev eth0 
192.168.56.0/24 dev eth0 proto kernel scope link src 192.168.56.100 

IP- адрес, который вы хотите использовать для своего брокера, должен быть в строке, начинающейся со значения по умолчанию, в примере case 192.168.56.100

+0

Да! я понял! изменен на адрес локального IP-адреса хоста, я думаю, что я пробовал адрес ip-маршрута, и он не работал, поэтому я просто использовал ipconfig на хосте и пробовал адрес там! Спасибо за вашу помощь :) – Jensen

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