PyBlueZ: создание нескольких клиентских подключений

В настоящее время у меня есть пара клиент/сервер, закодированная для 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)

Опять же, этот код отлично работает для последовательных соединений, но когда я пробую его параллельно, мой клиент получает ответ «занято» от системы bluetooth сервера. На стороне клиента я вывожу порт, к которому он пытается подключиться, и он всегда показывает порт «1».

Есть ли в PyBlueZ ограничение, разрешающее только одно соединение? Или я что-то не так делаю для параллельных подключений?

6
задан Matt 15 March 2012 в 22:50
поделиться