Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python 3.3的蓝牙服务器_Python_Python 3.x_Bluetooth - Fatal编程技术网

使用Python 3.3的蓝牙服务器

使用Python 3.3的蓝牙服务器,python,python-3.x,bluetooth,Python,Python 3.x,Bluetooth,Python 3.3附带了对蓝牙套接字的本机支持。不幸的是,它还没有很好的文档记录(在文章中只有一次提到它) 谷歌搜索它是关于实现一个客户端,但我找不到任何关于创建服务器的信息 更具体地说,就是如何设置用户友好的名称和宣传服务 比如 import socket serverSocket = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM,

Python 3.3附带了对蓝牙套接字的本机支持。不幸的是,它还没有很好的文档记录(在文章中只有一次提到它)

谷歌搜索它是关于实现一个客户端,但我找不到任何关于创建服务器的信息

更具体地说,就是如何设置用户友好的名称和宣传服务

比如

import socket

serverSocket = socket.socket(socket.AF_BLUETOOTH,
                             socket.SOCK_STREAM,
                             socket.BTPROTO_RFCOMM)
serverSocket.setTimeout(1)
serverSocket.bind(("", 1))
serverSocket.listen(1)

something.advertise_service(something something)
有什么想法吗?

坏消息: Python似乎不支持您开箱即用的操作。(至少不在)

我见过的大多数python/bluetooth用户都在使用它,尽管它自2009年以来就没有更新过

好消息: 我浏览了他们的源代码(Linux连接),找到了广告服务的相关信息。大部分代码基本上都是从python 2.2版的
socketmodule.c
复制粘贴的

pybluez
确实为
socket
对象定义了一些附加功能,以实现所有这些蓝牙功能。它不会变得太低级,而是取决于它的性能。据我所知,它基本上接受python对象并创建
BlueZ
所期望的数据结构,然后调用它。 如果你不想/不能使用
pybluez
,你必须以某种方式实现这个缺失的功能。我想你可以用c型来做。服务广告的相关部分见第2562-2642行

pybluez
的源代码中有一个python-3分支,尽管我不知道它是否有效

如果您确实决定使用
pybluez
,可以从


随着google代码的关闭,该代码也可以在github上找到。

看起来它们基本上集成了pybluez。看看这些例子:“advertise_service”在socket模块和服务器套接字中都不存在,在python源代码中搜索“advertise”只找到三条不相关的注释。我遇到了同样的问题。我可以制作一个简单的服务器,但不能执行诸如广告服务之类的任务。如果您感兴趣,您可以在此处看到客户机-服务器应用程序的代码:@TJD,PyBluez是从PyAffix复制而来的,PyAffix又是从python2.2复制而来的。谢谢,我想我将不再使用pc作为从机,因为我需要使用py3。
server_sock=BluetoothSocket( RFCOMM )
server_sock.bind(("",PORT_ANY))
server_sock.listen(1)

port = server_sock.getsockname()[1]

uuid = "94f39d29-7d6d-437d-973b-fba39e49d4ee"

advertise_service(server_sock, "SampleServer",
                  service_id = uuid,
                  service_classes = [ uuid, SERIAL_PORT_CLASS ],
                  profiles = [ SERIAL_PORT_PROFILE ], 
                  )