def create_bt_socket(interface=0):
exceptions = []
sock = None
try:
sock = socket.socket(family=socket.AF_BLUETOOTH,
type=socket.SOCK_RAW,
proto=socket.BTPROTO_HCI)
sock.setblocking(False)
sock.setsockopt(socket.SOL_HCI, socket.HCI_FILTER, pack("IIIh2x", 0xffffffff,0xffffffff,0xffffffff,0)) #type mask, event mask, event mask, opcode
try:
sock.bind((interface,))
except OSError as exc:
exc = OSError(
exc.errno, 'error while attempting to bind on '
'interface {!r}: {}'.format(
interface, exc.strerror))
exceptions.append(exc)
except OSError as exc:
if sock is not None:
sock.close()
exceptions.append(exc)
except:
if sock is not None:
sock.close()
raise
if len(exceptions) == 1:
raise exceptions[0]
elif len(exceptions) > 1:
model = str(exceptions[0])
if all(str(exc) == model for exc in exceptions):
raise exceptions[0]
raise OSError('Multiple exceptions: {}'.format(
', '.join(str(exc) for exc in exceptions)))
return sock
###########
评论列表
文章目录