我想使用 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 之前,我必须
答案 0 :(得分:0)
服务器监听 0.0.0.0:5000
。此上下文中的特殊 IP 地址 0.0.0.0
(“任何地址”)表示侦听所有本地接口(环回、以太网等)上的传入连接。 5000
是端口号,没问题。
客户端尝试连接到 0.0.0.0:5000
。作为目标地址的特殊 IP 地址 0.0.0.0
无效。计算机不知道将网络数据包发送到哪里。 “任何地址”在这里不可用,您必须提供一个真实的 IP 地址,该地址可以通过连接客户端和服务器的网络访问。