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

使用C# 32feet库连接小米与华硕设备蓝牙时遇地址无效错误

问题描述

我尝试用C#通过蓝牙连接小米手机与华硕电脑,过程中出现**「请求的地址在其上下文中无效」**错误。

完整代码

BluetoothClient client;
try
{
    client = new();
}
catch (Exception e)
{
    Console.WriteLine("Turn your bluetooth on and try again.");
    return;
}

BluetoothDeviceInfo[] devices = client.DiscoverDevices();


Console.WriteLine("Bluetooth Devices: ");
for (int i = 0; i < devices.Count(); i++)
{
    Console.WriteLine(i + " - " + devices[i].DeviceName);
}

Console.Write("Choose the device to connect: ");
int input = Convert.ToInt32(Console.ReadLine());


BluetoothDeviceInfo device = devices[input];
Console.WriteLine("Device adress: " + device.DeviceAddress.ToString());


BluetoothAddress bluetoothAdress = new(device.DeviceAddress.ToByteArray());
BluetoothEndPoint endPoint = new(bluetoothAdress, BluetoothService.HumanInterfaceDevice);



try
{
    client.Connect(endPoint);
    
    if (client.Connected)
    {
        Console.WriteLine("Connected successfully to " + device.DeviceName);
    }else
    {
        Console.WriteLine("Connection failed.");
    }
    
}
catch (Exception e)
{
    Console.WriteLine("Could not connect: \n" + e.ToString());
}

错误信息

连接失败:
System.Net.Sockets.SocketException (10049): 请求的地址在其上下文中无效。684DB6B68F13:0000112400001000800000805f9b34fb
在 System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
在 System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
在 InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.Connect(BluetoothEndPoint remoteEP)
在 InTheHand.Net.Sockets.BluetoothClient.Connect(BluetoothEndPoint remoteEP)


解决方案

1. 修复蓝牙地址转换错误

你通过device.DeviceAddress.ToByteArray()创建BluetoothAddress的方式会导致字节顺序异常(蓝牙地址为大端序,ToByteArray()默认输出小端序)。直接使用设备原生的DeviceAddress即可:

// 替换原地址转换代码
BluetoothAddress bluetoothAdress = device.DeviceAddress;

2. 确认目标服务是否被设备支持

你指定的BluetoothService.HumanInterfaceDevice(HID服务)可能未在小米手机上启用或不兼容。可以先获取设备支持的所有服务,再选择可用的服务UUID:

// 获取设备支持的所有服务
ServiceRecord[] services = device.GetServiceRecords();
foreach (var service in services)
{
    Console.WriteLine($"服务UUID: {service.ServiceId}");
}
// 选择第一个可用服务创建连接端点
BluetoothEndPoint endPoint = new(device.DeviceAddress, services[0].ServiceId);

优先尝试BluetoothService.SerialPort(SPP串口服务),这是多数蓝牙设备通用的数据传输服务。

3. 确保设备已配对并授权

  • 检查电脑蓝牙设置,确认小米手机已完成配对,且授予了「允许设备访问」的权限
  • 手机端需确认已信任该电脑,允许蓝牙连接请求

4. 重置蓝牙适配器

  • 关闭并重新开启电脑和手机的蓝牙模块,清除临时连接异常
  • 确保电脑蓝牙适配器处于可发现状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 17:30:09