【问题标题】:connect to raspberry pi with socketio使用 socketio 连接树莓派
【发布时间】:2023-03-24 18:20:01
【问题描述】:

我想使用来自socketio documentation 的服务器和客户端示例脚本连接到 Raspberry。 我正在使用第一个客户端和服务器示例代码。

当我在 pi 上运行服务器脚本时,我得到:

pi@raspberrypi:~/Desktop $ python3 server_socketio.py
(792) wsgi starting up on http://0.0.0.0:5000

所以这似乎有效。

当我在我的 Ubuntu 20.04 PC 上运行客户端脚本时,我得到:

/usr/bin/python3.8 /home/marco/Schreibtisch/BlinkingLED/client_socketio.py
Traceback (most recent call last):
  File "/home/marco/Schreibtisch/BlinkingLED/client_socketio.py", line 29, in <module>
    sio.connect('http://0.0.0.0:5000')
  File "/home/marco/.local/lib/python3.8/site-packages/socketio/client.py", line 314, in connect
    raise exceptions.ConnectionError(exc.args[0]) from None
socketio.exceptions.ConnectionError: Connection refused by the server

我试图打开 pi 上的端口

sudo apt-get install ufw
sudo ufw allow 5000
sudo ufw enable
sudo reboot

给了

pi@raspberrypi:~/Desktop $ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
5000                       ALLOW       Anywhere                  
8090                       ALLOW       Anywhere                  
22                         ALLOW       Anywhere                  
5000 (v6)                  ALLOW       Anywhere (v6)             
8090 (v6)                  ALLOW       Anywhere (v6)             
22 (v6)                    ALLOW       Anywhere (v6)             

而 netstat 给出:

pi@raspberrypi:~/Desktop $ sudo netstat -tulpn | grep LISTEN
tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      471/vncserver-x11-c 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      480/sshd            
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      419/cupsd           
tcp6       0      0 :::5900                 :::*                    LISTEN      471/vncserver-x11-c 
tcp6       0      0 :::22                   :::*                    LISTEN      480/sshd            
tcp6       0      0 ::1:631                 :::*                    LISTEN      419/cupsd    

将 python 脚本中的端口也更改为 5900 或 8090 也不起作用。怎么了?在树莓派上打开一个端口有更好的战争吗?据我了解,ufw 是防火墙。我必须 才能再次通过 ssh 连接到我的 pi。 请帮忙。

【问题讨论】:

  • 你可以在你的RasPi上运行hostname -I找到你需要使用的地址。

标签: python python-3.x tcp raspberry-pi


【解决方案1】:

服务器监听0.0.0.0:5000。在此上下文中,特殊的 IP 地址0.0.0.0(“任何地址”)表示侦听所有本地接口(环回、以太网等)上的传入连接。而5000是端口号,没问题。

客户端尝试连接到0.0.0.0:5000。作为目的地址的特殊 IP 地址0.0.0.0 无效。计算机不知道将网络数据包发送到哪里。 “任何地址”在此处不可用,您必须提供可通过连接客户端和服务器的网络访问的真实 IP 地址。

【讨论】:

  • 谢谢!现在,当我使用 PC 上 client.py 中的本地 IP 地址作为连接功能的地址时,它可以工作:192.168.2.112。但是当我去一些主页给我我的公共 IP 然后在 client.py 中使用它时,它不再工作了。你能告诉我为什么会这样吗?我的电脑和我的树莓派连接到同一个路由器,这可能是个问题吗?
  • @M.Hoppe 所有以192.168. 开头的地址仅供私人使用,在互联网上无效。当您连接到 Internet 时,您的提供商会将私有地址透明地转换为公共 IP 地址。公共 IPv4 地址是一种稀缺资源。这是一篇关于这个话题的文章:whatismyipaddress.com/private-ip
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-09
  • 2021-11-19
  • 2013-12-13
  • 2017-07-21
  • 1970-01-01
  • 2016-07-09
  • 1970-01-01
相关资源
最近更新 更多