You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将蓝牙地址格式化为btaddr用于Winsock蓝牙连接

问题修复方案

核心问题说明

你提到的蓝牙地址格式化为btAddr的操作无需额外转换:BTH_ADDR本质是64位无符号整数类型,你现有代码中sockAddr.btAddr = 0x7C9EBD4CBFB2;的赋值方式完全正确,连接失败是其他参数配置错误导致的,具体问题如下:

  • 缺少Winsock初始化流程:所有Winsock相关操作执行前必须调用WSAStartup完成库初始化,未初始化会直接导致socket创建失败
  • serviceClassId参数填写错误:此处不能填RFCOMM_PROTOCOL_UUID,需要填写你要连接的远端蓝牙设备对应服务的UUID,比如常用蓝牙串口服务对应的UUID为SerialPortServiceClass_UUID
  • port参数使用错误:BT_PORT_ANY仅用于本地服务bind绑定场景,作为客户端发起连接时,需要指定远端服务对应的RFCOMM端口号
  • 缺少错误判断逻辑:没有对API调用结果做校验,无法定位具体错误节点

修复后完整代码

#include <winsock2.h>
#include <ws2bth.h>
#include <Windows.h>
#include <iostream>
#pragma comment(lib, "Ws2_32.lib")
#pragma comment(lib, "Bthprops.lib")

using namespace std;

int main() {
    // 初始化Winsock环境
    WSADATA wsaData;
    int err = WSAStartup(MAKEWORD(2, 2), &wsaData);
    if (err != 0) {
        cout << "Winsock初始化失败,错误码:" << err << endl;
        return 1;
    }

    // 创建蓝牙RFCOMM socket
    SOCKET btSocket = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
    if (btSocket == INVALID_SOCKET) {
        cout << "socket创建失败,错误码:" << WSAGetLastError() << endl;
        WSACleanup();
        return 1;
    }

    // 填充蓝牙地址结构
    SOCKADDR_BTH sockAddr = {0};
    sockAddr.addressFamily = AF_BTH;
    // 蓝牙地址直接赋值即可,无需额外格式转换
    sockAddr.btAddr = 0x7C9EBD4CBFB2;
    // 替换为你实际要连接的服务UUID,此处以蓝牙串口服务为例
    sockAddr.serviceClassId = SerialPortServiceClass_UUID;
    // 填写远端服务对应的RFCOMM端口,常见蓝牙串口默认端口为1,可根据实际场景修改
    sockAddr.port = 1;

    // 发起连接
    err = connect(btSocket, (SOCKADDR*)&sockAddr, sizeof(sockAddr));
    if (err == SOCKET_ERROR) {
        cout << "连接失败,错误码:" << WSAGetLastError() << endl;
        closesocket(btSocket);
        WSACleanup();
        return 1;
    }

    cout << "连接成功" << endl;

    // 此处可添加后续数据收发逻辑

    // 资源释放
    closesocket(btSocket);
    WSACleanup();
    return 0;
}

补充说明

  • 如果你不知道目标服务的RFCOMM端口号,可以调用WSALookupServiceNext或者BthEnumerateServices接口,通过服务UUID自动查询对应端口,避免硬编码端口
  • 连接前请确认目标蓝牙设备已经和本机完成配对,且对应服务处于可用状态

内容的提问来源于stack exchange,提问作者Isaac W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:57:01