我正在尝试开发一个程序(在 python 3 中),在该程序中,可以使用蓝牙(使用 pybluez)将一定数量的数据从一台计算机传输到另一台计算机。在客户端连接到设备后,由于某种原因,应用程序的服务器端会在大约 30 秒后引发 BluetoothError 异常。它引发以下异常:
bluetooth.btcommon.BluetoothError: (103, '软件导致连接中止')
我认为我可以在我的代码中有所作为,所以我决定做一个更简单的版本,以测试它。我得到了完全相同的错误。
以下代码是我之前谈到的更简单的版本。
这是服务器端
from bluetooth import *
x = BluetoothSocket(RFCOMM)
print("bind")
x.bind(("", 1))
print("listen")
x.listen(1)
print("accepting")
conn, _ = x.accept()
print("reading")
print(conn.recv(256).decode('utf-8'))
print("closing")
conn.close()
x.close()
这是客户端
from bluetooth import *
x = BluetoothSocket(RFCOMM)
x.connect((<addr>,1))
注意:客户端不是从文件中执行的,而是直接写在 python shell 中的
将服务器端脚本放在普通计算机上运行并将客户端脚本放在带有 raspbian 的树莓派 3 上后,我在 30 秒后得到了 BluetoothError。该行引发了异常:
print(conn.recv(256).decode('utf-8'))
在此期间,我能够将消息从一侧发送到另一侧。无论我做什么,30 秒后,都会引发异常。
我不知道发生了什么。我将尝试在另一台计算机上使用客户端脚本,但它变得越来越复杂(Windows,我是对的:p)。