我正在尝试使用Python创建RFCOMM服务器进程,该进程无需配对即可使用。最初,我从PyBluez文档中获取了两个示例脚本:
服务器:
# file: rfcomm-server.py
# auth: Albert Huang <albert@csail.mit.edu>
# desc: simple demonstration of a server application that uses RFCOMM sockets
#
# $Id: rfcomm-server.py 518 2007-08-10 07:20:07Z albert $
from bluetooth import *
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 ],
# protocols = [ OBEX_UUID ]
)
print "Waiting for connection on RFCOMM channel %d" % port
client_sock, client_info = server_sock.accept()
print "Accepted connection from ", client_info
try:
while True:
data = client_sock.recv(1024)
if len(data) == 0: break
print "received [%s]" % data
except IOError:
pass
print "disconnected"
client_sock.close()
server_sock.close()
print "all done"
客户:
# file: rfcomm-client.py
# auth: Albert Huang <albert@csail.mit.edu>
# desc: simple demonstration of a client application that uses RFCOMM sockets
# intended for use with rfcomm-server
#
# $Id: rfcomm-client.py 424 2006-08-24 03:35:54Z albert $
from bluetooth import *
import sys
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 = raw_input()
if len(data) == 0: break
sock.send(data)
sock.close()
当我在Windows上运行服务器脚本时,一切都按我希望的那样工作-无需配对。在此阶段,一切看起来都很有希望。
但是,我需要服务器进程在Debian
Squeeze下运行。当我在Debian上测试时,客户端连接被拒绝。在系统日志中,有来自蓝牙的消息,用于失败的链接密钥请求和PIN请求。
版本信息:
该讨论似乎表明,如果我可以调整服务器套接字上的安全级别,则将禁用配对,并且一切将按预期进行。对于我来说,如何使用PyBluez做到这一点还是不明显的,甚至是可能的。
我已经尝试过使用各种BT_SECURITY
*常数调用setsockopt(),以及尝试获取最后一个PyBluez并调用setl2capsecurity(),但未能取得任何进展。
PyBluez是否可以实现?
原来这是Debian Squeeze bluez默认配置的问题。
如果还有其他人遇到此问题,请通过编辑/etc/bluetooth/main.conf禁用pnat插件:
DisablePlugins = pnat
然后重新启动蓝牙。
$ sudo invoke-rc.d bluetooth restart
不需要更改PyBluez代码。
在使用Spring5、JUnit4.11和JDK8运行一些集成测试之前,我尝试使用@sqlgroup执行一些SQL语句。 直到今天,当我用@PostConstruct注释在我的“ConfigurationComponent”bean上添加一些初始配置时,一切都完美无缺地工作着。 当@PostConstruct方法调用依赖于数据库的bean时,测试失败,因为hiberante(因此数据库)找不到预加
Im使用OpenSSL的< code>dgst命令执行ECDSA签名,如下所示: 然而,我在这个SO答案中读到,它首先对data_file进行SHA256哈希处理,ASN.1在签名之前对哈希进行编码。 我想创建数据的SHA256哈希,并让ECDSA只对该哈希的原始字节进行签名。(由于这是ECDSA签名,我不能使用如上述SO答案中所述。) 如何使用OpenSSL实现这一点?
我的要求是: 在我的应用程序中,当用户通过登录屏幕(而不是使用Spring Security)登录时,身份验证第一次由定制的第三方API执行。现在,我们几乎没有使用rest服务调用的增强功能。根据要求,在从应用程序发出任何rest调用之前,我们需要根据数据库重新验证用户。由于用户在使用登录屏幕登录时已经进行了验证,并且请求中提供了这些详细信息,因此我计划使用spring security对用户进行
StreamingContext-fileStream也被重载以获取Hadoop配置对象,但它似乎不起作用。 来自Spark源代码的代码片段: https://github . com/Apache/spark/blob/master/streaming/src/main/Scala/org/Apache/spark/串流/StreamingContext.scala 代码片段:工作正常 编译错误
然后我再做一次,但第二次完全不迭代。我花了很多时间调试它,最后将迭代程序转换为一个列表。 你们有谁知道原因吗? 编辑:对不起,如果我不清楚, 谢谢,Harendra
问题内容: 我想使用VKCOM / noverify来分析代码。使用此命令从命令行(Windows dos shell)调用它 问题是我无法将参数传递给 我尝试了什么 您可以在此摘要中找到我的源代码。尽管分隔符在上方为空,但似乎args是以字符串分隔的形式加入的。 问题 如何将多个参数传递给 为什么我的尝试在Windows上不起作用? 问题答案: 有多个选项可以将参数传递给exec.Command