蓝牙和连接
蓝牙使用 连接 功能来使用以前创建的蓝牙套接字连接到目标蓝牙设备。 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 |
即插即用、驱动程序堆栈事件或其他错误导致故障。 |