【问题标题】:pyBluez python server - phone don't see my serverpyBluez python 服务器 - 手机看不到我的服务器
【发布时间】:2026-01-16 23:00:01
【问题描述】:

首先我很抱歉,如果我的英语不是很好,因为我是法国人。

我是使用 pyBluez 进行蓝牙开发的初学者(我已经知道 TCP 和 UDP 套接字),我的服务器有点问题。 当我运行以下代码时,我的电脑似乎处于监听状态,但是当我的手机(诺基亚 xpress 音乐 5800)尝试检测它时,它什么也看不到!

对我来说有两件令人惊讶的事情: 1)我的代码中没有配置像“我的电脑”这样的名称的功能。也许我的手机找到了我的地址,但是因为它无法通过类似lookup_name() 的函数解析名称,它认为我的电脑没有打开?

2) 当我用 serversock.bind(("00:12:34:56:78:9A",PORT_ANY)) 替换 serversock.bind(("",PORT_ANY)) 时,其中 00:12:34:56:78:9A 是 hciconfig 工具为我的蓝牙设备提供的地址,我得到: _bluetooth.error: (98, 'Address already in use'

只是一个愚蠢的问题,因为我认为答案是肯定的,因为渠道: 是否可以在同一个蓝牙接口上监听多个程序。

我在 root 上运行程序

from bluetooth import *
serversock=BluetoothSocket(RFCOMM)
serversock.bind(("",PORT_ANY))
serversock.listen(1)
advertise_service(serversock,"SampleServer",service_classes = [ SERIAL_PORT_CLASS ],profiles = [ SERIAL_PORT_PROFILE ] )
clientsock,clientinfo = serversock.accept()
print "Accepted connection from " , clientinfo
clientsock.send("PyBluez server says Hello!! ")
data = clientsock.recv(1024)
print "received: " , data
clientsock.close()
serversock.close()

谢谢

【问题讨论】:

    标签: python sockets bluetooth nokia bluez


    【解决方案1】:

    使用hciconfig检查服务器的可见性:

    # hciconfig
    
    hci0:   Type: USB
        BD Address: 00:11:22:12:34:56 ACL MTU: 192:8  SCO MTU: 64:8
        UP RUNNING PSCAN ISCAN
        RX bytes:296 acl:0 sco:0 events:26 errors:0
        TX bytes:536 acl:0 sco:0 commands:22 errors:0
    

    如果您的本地设备不可见,请使用以下命令设置可见性:

    hciconfig hci0 piscan
    

    根据需要关闭可见性:

    hciconfig hci0 noscan
    

    【讨论】: