蓝牙和连接

蓝牙使用 连接 功能来使用以前创建的蓝牙套接字连接到目标蓝牙设备。 connect 函数的 名称 参数(SOCKADDR_BTH 结构)必须指定目标蓝牙设备。 两种机制用于标识目标设备:

  • SOCKADDR_BTH 结构可以直接指定请求连接的端口号。 此机制要求应用程序在尝试 连接作之前执行其自己的 SDP 查询。
  • SOCKADDR_BTH 结构可以指定要连接到的服务的唯一服务类 ID。 如果对等设备有多个与服务类 ID 相对应的端口,则 连接 函数调用连接到第一个有效服务。 无需以前的 SDP 查询即可使用此机制。

SOCKADDR_BTH 结构与 connect 函数一起使用时,需要满足以下要求:

  • btAddr 成员必须是有效的远程无线电地址。
  • 对于 serviceClassId 成员,如果端口成员为零,系统会尝试使用 serviceClassId 解析与服务对应的远程端口。 服务类是由蓝牙规范定义的规范化 128 位 GUID。 常见 GUID 由蓝牙分配号码文档定义。 或者,唯一的 GUID 可用于特定于域的应用程序。
  • 端口 成员必须是有效的远程端口;如果指定了 serviceClassId 成员,则为零。

下表列出了蓝牙和 连接 函数的结果代码。

错误/错误# 描述
WSAEISCONN10056
为已连接的套接字调用的 connect 函数。
WSAEACCES10013
连接应用程序请求身份验证,但身份验证失败。
WSAENOBUFS10055
无法恢复的内存不足错误。
WSAEADDRINUSE10048
请求的端口/通道号正在使用中。
WSAETIMEDOUT10060
I/O 在蓝牙无线电级别超时(PAGE_TIMEOUT)。
WSAEDISCON10101
远程对等方断开连接的 RFCOMM 通道。
WSAECONNRESET10054
远程对等方断开连接的 RFCOMM 多路复用器(会话)。
WSAECONNABORTED10053
按应用程序关闭套接字。
WSAENETUNREACH10051
在 L2CAP 或蓝牙无线电级别超时以外的错误。
WSAEHOSTDOWN10064
RFCOMM 收到 DM 响应。
WSAENETDOWN10050
意外的网络错误。
WSAESHUTDOWN10058
远程对等方断开连接的 L2CAP 通道。
WSAEADDRNOTAVAIL10049
蓝牙端口/通道或设备地址无效。
WSAEINVAL10022
即插即用、驱动程序堆栈事件或其他错误导致故障。

Windows 套接字

连接

SOCKADDR_BTH