Форум сайта python.su
Доброго времени суток.Я заинтересовался темой блютуз устройств и решил ее изучить с примерами.Но при попытке подключиться к какому-либо серверу(в данном случае самому себе) у меня выскакивает ошибка.Вот мой код:
from bluetooth import * server_sock=BluetoothSocket( RFCOMM ) server_sock.bind(("",PORT_ANY)) server_sock.listen(1) server=BluetoothSocket( RFCOMM ) ADDR = "00:11:22:98:76:54" server.connect((ADDR,PORT_ANY)) server.send("hello!!") server.close() client_sock,address = server_sock.accept() client_sock.close() server_sock.close() server.close()
Traceback (most recent call last): File "D:\Рабочий стол\fhg.py", line 9, in <module> server.connect((ADDR,PORT_ANY)) File "D:\pythonchik\lib\site-packages\bluetooth\msbt.py", line 72, in connect bt.connect (self._sockfd, addr, port) IOError: Требуемый адрес для своего контекста неверен.
Отредактировано Kirya200 (Апрель 15, 2017 17:18:49)
Офлайн
Мне тут помогут?
Офлайн
Kirya200Наверное, сервер и клиент отличаются. Нужно сделать клиента, чтобы подлючать его потом.
Скажите,что это за ошибка и как ее исправить?
Офлайн
Kirya200Это как, к самому себе? У Вас в компе вставлен один свисток блютус и Вы пытаетесь его использовать как сервер и клиент?
Но при попытке подключиться к какому-либо серверу(в данном случае самому себе) у меня выскакивает ошибка
from bluetooth import * server_sock=BluetoothSocket( RFCOMM ) # Создаем сокет сервера server_sock.bind(("",PORT_ANY)) # server_sock.listen(1) # server=BluetoothSocket( RFCOMM ) # Создаем сокет клиента, ADDR = "00:11:22:98:76:54" # server.connect((ADDR,PORT_ANY)) # Подключаемся к созданному серверу (через устройство которое уже работает сервером и ждет подключения) server.send("hello!!") # Отправляем сообщение server.close() # Закрывает сокет клиента client_sock,address = server_sock.accept() # Обрабатываем сообщение от клиента client_sock.close() server_sock.close() server.close() # Второй раз закрываем сокет клиента
Отредактировано MrViktor (Апрель 17, 2017 10:10:25)
Офлайн
Это как, к самому себе? У Вас в компе вставлен один свисток блютус и Вы пытаетесь его использовать как сервер и клиент?Да,вы правильно меня поняли.Я пытаюсь подключиться к самому себе используя свисток,как сервер и клиент.Но при попытке подключиться к близлежащим устройствам у меня высвечивается та же ошибка.
В общем, подумайте, где у вас ошибка (прочитав мои комментарии к вашему коду), надеюсь я правильно помню про этот модуль (да и посмотрите примеры которые идут с этим модулем, там все не так сложно).1.У меня ошибка в строке с подсоединением к серверу в моем и вашем примере(server.connect((ADDR,PORT_ANY)) ).
from bluetooth import * import sys if sys.version < '3': input = raw_input addr = None if len(sys.argv) < 2: print("no device specified. Searching all nearby bluetooth devices for") print("the SampleServer service") else: addr = sys.argv[1] print("Searching for SampleServer on %s" % addr) # search for the SampleServer service uuid = "94f39d29-7d6d-437d-973b-fba39e49d4ee" service_matches = find_service( uuid = uuid, address = addr ) if len(service_matches) == 0: print("couldn't find the SampleServer service =(") sys.exit(0) first_match = service_matches[0] port = first_match["port"] name = first_match["name"] host = first_match["host"] print("connecting to \"%s\" on %s" % (name, host)) # Create the client socket sock=BluetoothSocket( RFCOMM ) sock.connect((host, port)) print("connected. type stuff") while True: data = input() if len(data) == 0: break sock.send(data) sock.close()
no device specified. Searching all nearby bluetooth devices for the SampleServer service couldn't find the SampleServer service =(
first_match = service_matches[0] IndexError: list index out of range
Отредактировано Kirya200 (Апрель 17, 2017 21:20:48)
Офлайн
Kirya200Ох.. не хотите вы читать, а тем более понимать то, что вы кодите.
Kirya200на
server.connect((ADDR,PORT_ANY))
server.connect((ADDR,1))
Отредактировано MrViktor (Апрель 18, 2017 08:46:12)
Офлайн
Вот скажите мне пожалуйста,каким образом мне исправить вот этот код?
from bluetooth import * server_sock=BluetoothSocket( RFCOMM ) server_sock.bind(("",1)) server_sock.listen(1) server=BluetoothSocket( RFCOMM ) ADDR = "00:11:22:98:76:54" server.connect((ADDR,1)) server.send("hello!!") server.close() client_sock,address = server_sock.accept() client_sock.close() server_sock.close() server.close()
Traceback (most recent call last): File "D:\Рабочий стол\fhg.py", line 7, in <module> server.connect((ADDR,1)) File "D:\pythonchik\lib\site-packages\bluetooth\msbt.py", line 72, in connect bt.connect (self._sockfd, addr, port) IOError: Сделана попытка выполнить операцию на сокете при отключенной сети.
Ох.. не хотите вы читать, а тем более понимать то, что вы кодите.Я все читаю и понимаю,кроме того,почему у меня высвечиваются ошибки даже при смене кода?Я пытался обнаружить проблему и кажется понял в чем дело.Вот:http://softport02.ulcraft.com/uploads/s/w/y/r/wyr3is6uek66/img/autocrop/081e7c73d543cbe474f22aa379248d95.png
Отредактировано Kirya200 (Апрель 21, 2017 18:00:53)
Офлайн
Kirya200Ох… придется поучить немного.
Вот скажите мне пожалуйста,каким образом мне исправить вот этот код?
from bluetooth import * server_sock=BluetoothSocket(RFCOMM) server_sock.bind(("", ANY_PORT)) server_sock.listen(1) client_sock, address = server_sock.accept() # метод accept() возвращает сокет клиентского подключения и client_sock.close() # его адрес, все присланные клиентом сообщения будем читать из client_sock server_sock.close() server.close()
from bluetooth import * client=BluetoothSocket( RFCOMM ) ADDR = "00:11:22:98:76:54" client.connect((ADDR,1)) client.send("hello!!") client.close()
Service Name: OBEX Object Push Service RecHandle: 0x10006 Service Class ID List: "OBEX Object Push" (0x1105) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 4 "OBEX" (0x0008) Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Service Name: Network Access Point Service Service Description: Bluetooth NAP Service Service RecHandle: 0x10007 Service Class ID List: "Network Access Point" (0x1116) Protocol Descriptor List: "L2CAP" (0x0100) PSM: 15 "BNEP" (0x000f) Version: 0x0100 SEQ8: 0 6 Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "Network Access Point" (0x1116) Version: 0x0100 Service Name: Phonebook Access PSE Service RecHandle: 0x10009 Service Class ID List: "Phonebook Access - PSE" (0x112f) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 8 "OBEX" (0x0008) Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "Phonebook Access" (0x1130) Version: 0x0100
from bluetooth import * import sys if sys.version < '3': input = raw_input addr = None if len(sys.argv) < 2: print("no device specified. Searching all nearby bluetooth devices for") print("the SampleServer service") else: addr = sys.argv[1] print("Searching for SampleServer on %s" % addr) # search for the SampleServer service adr = '00:11:22:98:76:54' service_matches = find_service(address=adr) if len(service_matches) == 0: print("couldn't find the SampleServer service =(") sys.exit(0) first_match = service_matches[0] port = first_match["port"] name = first_match["name"] host = first_match["host"] print("connecting to \"%s\" on %s" % (name, host)) # Create the client socket sock=BluetoothSocket( RFCOMM ) sock.connect((host, port)) print("connected. type stuff") while True: data = input() if len(data) == 0: break sock.send(data) sock.close()
Офлайн
Я хочу сделать переписку сообщениями с компьютера на телефон через блютуз.
Я пытался подключиться,но у меня опять высвечивается ошибка,но только теперь другая:
from bluetooth import * client=BluetoothSocket( RFCOMM ) ADDR = "40:d3:ae:4b:f1:c1" client.connect((ADDR,1)) client.send("hello!!") client.close()
Traceback (most recent call last): File "D:\Рабочий стол\fhg.py", line 4, in <module> client.connect((ADDR,1)) File "D:\pythonchik\lib\site-packages\bluetooth\msbt.py", line 72, in connect bt.connect (self._sockfd, addr, port) IOError: Произошла ошибка операции на сокете, т.к. конечный хост выключен.
Отредактировано Kirya200 (Апрель 28, 2017 20:13:19)
Офлайн
Короче говоря я подключаюсь по этому коду(просто сделал тайм-аут видимости на устройстве к которому подключаюсь)и ничего не происходит.Просто идет бесконечное ожидание и еще на устройстве к которому я подключаюсь никакое сообщение не высвечивается,но если убрать тайм-аут видимости,то высветится ошибка:“…конечный хост выключен” на самом компьютере.Скажите,как мне двигаться дальше,то есть,как передать сообщение устройству?
Офлайн