2016-04-23 2 views
0

Я пытаюсь создать простой клиент/сервер Bluetooth, где моя малина Pi - это сервер и мой ноутбук клиент.Connection отказался при попытке подключиться к серверу bluetooth

Это код сервера (работает на моем Raspberry Pi):

#!/usr/bin/python 
# -*- coding: utf-8 

import wifi, bluetooth 

uuid="1e0ca4ea-299d-4335-93eb-27fcfe7fa848" 

print "Setting up Bluetooth socket" 

try: 
    sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM) 
    sock.bind(("", 0)) 
    sock.listen(1) 
except IOError as e: 
    print str(e) 


print "Registering service" 
try: 
    bluetooth.advertise_service(sock, "MyService", uuid) 

    while True: 
    print "Waiting for connection..." 
    client_sock,address = sock.accept() 
    print "Accepted connection from {0}".format(address) 

    data = client_sock.recv(1024) 
    print "Received data: {0}".format(data) 

    print "Closing client socket." 
    client_sock.close() 
except IOError as e: 
    print str(e) 

Это, кажется, работает, скрипт работает и блоки с Waiting for connection....

Тогда, мой код клиента:

#!/usr/bin/python 
# -*- coding: utf-8 

import bluetooth, time 

mac = "00:15:83:E5:E2:46" 
uuid = "1e0ca4ea-299d-4335-93eb-27fcfe7fa848" 

service = [] 
retry = 1 
while len(service) == 0: 
    print "Looking for service on {0}, try {1}".format(mac, retry) 
    service = bluetooth.find_service(address=mac, uuid=uuid) 
    retry = retry + 1 
    time.sleep(1) 

if len(service) == 1: 
    service = service[0] 
    print "Service found. Name={0}".format(service["name"]) 

    print "Connecting to service." 

    sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM) 
    try: 
    sock.connect((mac, service["port"])) 
    print "Connected to service on {0} on port {1}".format(mac, service["port"]) 
    except bluetooth.btcommon.BluetoothError as e: 
    print "Connection failed: {0}".format(e) 

elif len(service) == 0: 
    print "No service found on mac {0}.".format(mac) 
else: 
    print "{0} services found for mac/uuid, ignored.".format(len(service)) 

Также работает, до тех пор, пока я пытаюсь connect() к Raspberry Pi. Я получаю следующее сообщение об ошибке:

Connecting to service. 
Connection failed: (111, 'Connection refused') 

Я пытался подключить ноутбук к Raspberry Pi (он находит его и говорит, что это «Connected») и поиск дополнительной информации в Интернете, но не смог найти что-нибудь.

ответ

2

Эта ошибка возникает, когда вы хотите подключиться к порту прослушивания.

U слушает порт «0» ..... Изменить его, например, 9999, а затем клиент должен подключиться к этому порту на адресах серверов

+0

кода [документация] (https: // pybluez .googlecode.com/svn/www/docs-0.7/public/bluetooth-module.html # get_available_port) говорит: 'устарело. вместо этого привяжите к порту нуль. '. Кроме того, при запросе службы он говорит, что он работает на порту 1. При выборе другого порта я получаю другую ошибку. –

+0

Еще один пример смутной документации. Взятие порта явно работало. Порт 1 не работал. –

Смежные вопросы