使用Python Socket无法连接iPad与树莓派的问题求助
解决iPad连接树莓派Socket服务器出现Connection refused的问题
核心问题定位
你遇到的[Errno 61] Connection refused错误,核心原因是客户端配置错误——client.py里的HOST设为0.0.0.0完全错误,0.0.0.0是服务器用来监听所有网卡地址的占位符,客户端必须指定树莓派的实际局域网IP才能建立连接。
分步解决方案
1. 获取树莓派的局域网IP
在树莓派终端执行以下命令,查看WiFi或以太网的局域网IP:
ip addr
找到对应网卡(比如wlan0对应WiFi)下的inet字段,比如192.168.3.12,这就是树莓派在局域网内的可访问地址。
2. 修正client.py的HOST配置
把client.py里的HOST = "0.0.0.0"替换成刚才获取的树莓派IP,同时补充消息发送和接收逻辑(原代码仅完成连接,未实现消息交互):
import socket # 替换为你的树莓派局域网IP HOST = "192.168.3.12" PORT = 9999 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) print("Attempting connection... ") try: sock.connect((HOST, PORT)) print("Connected") # 发送消息到树莓派 sock.send(b"Hello from iPad!") # 接收服务器的ACK响应 response = sock.recv(1024) print(f"Received server response: {response.decode('utf-8')}") except ConnectionRefusedError: print("Connection failed: 检查树莓派IP、端口是否开放,以及服务器是否运行") finally: sock.close()
3. 确认网络环境一致
确保iPad和树莓派连接的是同一个WiFi/局域网,跨网段或不同网络下无法直接访问。
4. 检查树莓派防火墙设置
如果树莓派开启了防火墙(比如ufw),需要允许9999端口的TCP连接:
sudo ufw allow 9999/tcp sudo ufw reload
若仅用于测试,可临时关闭防火墙:
sudo ufw disable
5. 验证服务器监听状态
在树莓派终端执行命令,确认server.py确实在监听9999端口:
netstat -tulpn | grep 9999
输出中应能看到python3进程监听0.0.0.0:9999。
测试流程
- 树莓派上运行
python3 server.py,看到[*] Listening on 0.0.0.0:9999说明服务器启动正常。 - iPad上运行修正后的
client.py,正常情况下会输出连接成功、发送消息、收到服务器的ACK响应。
内容的提问来源于stack exchange,提问作者RockZombie
相关产品推荐
相关产品推荐

