如何通过以太网直接连接两台Raspberry Pi?求最简数据交互方案
两台树莓派以太网直连最简数据交互方案
步骤1:物理连接
- 用一根普通网线(当前树莓派网口支持自动翻转,无需专用交叉线)直接连接两台树莓派的以太网接口。
步骤2:配置静态IP
因为无路由器分配IP,需手动设置同一网段的静态地址:
- 在两台树莓派上分别编辑dhcpcd配置文件:
sudo nano /etc/dhcpcd.conf - 在文件末尾添加以下内容(IP可自定义,只要处于同一网段即可):
- 第一台树莓派:
interface eth0 static ip_address=192.168.10.1/24 - 第二台树莓派:
interface eth0 static ip_address=192.168.10.2/24
- 第一台树莓派:
- 保存退出(按
Ctrl+O确认,回车,再按Ctrl+X),重启dhcpcd服务:sudo systemctl restart dhcpcd - 测试连通性:在第一台执行
ping 192.168.10.2,能收到回复则网络配置成功。
步骤3:数据交互的最简实现方式
方式1:用nc(netcat)快速传输数据
- 接收端(如192.168.10.2)启动监听:
nc -l 1234 > received_data.txt - 发送端(如192.168.10.1)发送文件或文本:
输入文本后回车,接收端即可实时收到内容。# 发送文件 nc 192.168.10.2 1234 < send_data.txt # 直接发送文本(接收端仅需执行`nc -l 1234`) nc 192.168.10.2 1234
方式2:用scp稳定传输文件
- 从第一台传输文件到第二台:
scp /本地文件路径 pi@192.168.10.2:/远程保存路径 - 从第二台拉取文件到第一台:
首次连接需输入scp pi@192.168.10.2:/远程文件路径 /本地保存路径yes确认主机指纹,再输入对方树莓派的用户密码即可。
方式3:Python Socket脚本实现自定义交互
如果需要编程实现实时数据交互,用Socket最灵活:
- 服务端脚本(运行在192.168.10.1):
import socket server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(('192.168.10.1', 1234)) server.listen(1) conn, addr = server.accept() print(f"已连接设备:{addr}") while True: data = conn.recv(1024) if not data: break print(f"收到数据:{data.decode('utf-8')}") conn.sendall(b"数据已接收") conn.close() - 客户端脚本(运行在192.168.10.2):
import socket client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect(('192.168.10.1', 1234)) client.sendall(b"来自Pi2的测试数据") res = client.recv(1024) print(f"收到回复:{res.decode('utf-8')}") client.close()
方案优势对比I2C
- 以太网带宽远高于I2C,传输速度更快
- 抗干扰能力强,完全避免I2C的噪音问题
- 无需额外硬件,仅靠一根网线即可实现稳定通信
内容的提问来源于stack exchange,提问作者Thanasis
相关产品推荐
相关产品推荐

