我目前有一个针对PyBlueZ的客户端/服务器对。现在,服务器可以连接到顺序的客户端-它将一直工作到与一个客户端完成连接,然后它将开始监听另一个客户端。
但是,我真正想要的是在单独的线程中运行客户端通信,因此我可以同时拥有多个客户端。但是,当我尝试第二个客户端连接时,PyBlueZ会通告第一个客户端当前正在使用的相同端口。我正在建立这样的连接:
self.port = bluetooth.PORT_ANY
print "Accepting clients..."
self.server_sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )
self.server_sock.bind(("",self.port))
self.server_sock.listen(5)
print "listening on port %d" % self.port
bluetooth.advertise_service( self.server_sock, MY_SERVICE, MY_UUID )
client_sock,address = self.server_sock.accept()
print "Accepted connection from ",address
commThread = ServerThread(client_sock, self.bn_id, self.bn_name, self.bn_thumbnail)
同样,此代码对于顺序连接也能正常工作,但是当我并行尝试时,我的客户端从服务器的蓝牙系统收到“忙”响应。在客户端,我输出尝试连接的端口,并且始终显示端口“1”。
PyBlueZ是否有仅允许单个连接的限制?还是我在这里为并行连接做错了什么?
最佳答案
我认为您的问题与代码的蓝牙客户端部分无关。
您正确显示了蓝牙服务器代码。您应该尝试更改的内容:
self.port = bluetooth.PORT_ANY
尝试 channel 1、2,依此类推,看看是否有效!然后,您要做的就是跟踪分配的 channel 。
请让我知道它是否有效!
关于python - PyBlueZ : Create multiple client connections,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9710653/