python蓝牙 - 如何在Windows

时间:2015-05-13 04:32:28

标签: python windows sockets bluetooth

这个问题已被多次提出,大多数答案与TCP/IP有关。但我正在寻找Bluetooth相关的。

我试图通过蓝牙在两台机器之间发送信息。我在linux和windows上安装了pybluez,它在两个Os上发现其他附近的设备时工作得很好。后来我以this code为例发送信息。它工作得很好,客户端是linux机器和服务器是linux机器。当我在windows7上运行服务器端代码时出现错误

server_sock.bind(("",port))
  File "C:\Python27\lib\site-packages\bluetooth\msbt.py", line 60, in bind
    status = bt.bind (self._sockfd, addr, port)
IOError: Only one usage of each socket address (protocol/network address/port) is normally permitted.

我意识到在Windows上使用端口后,只关闭地址/端口是不够的,但也必须设置为重用(from SO)。 但bluetooth.BluetoothSocket内部没有类似的库来重用地址/端口。

如何多次使用套接字?还是有另一种方式,......?

代码:

import bluetooth

server_sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )

port = 1
server_sock.bind(("",port))
server_sock.listen(1)

client_sock,address = server_sock.accept()
print "Accepted connection from ",address

data = client_sock.recv(1024)
print "received [%s]" % data

client_sock.close()
server_sock.close()

2 个答案:

答案 0 :(得分:0)

我遇到了和你一样的问题,但是昨天解决了这个问题,想到也许你可以尝试和我一样的方法。尝试使用不同的端口号而不是端口1.我个人使用端口5(instea of​​ 1)并停止了此问题。希望能帮助到你!由于某种原因,我还不太确定,在该端口第一次成功连接后,端口1无法重复使用。

答案 1 :(得分:0)

重置hciconfig,这是因为套接字已在使用中