【热门技术】Winsock 搜索蓝牙设备
来源:互联网 发布:记事本编程html 编辑:程序博客网 时间:2024/04/24 10:56
http://blog.csdn.net/JamesXing/article/details/1700338 这里有各种蓝牙相关的文章
我们如何检索计算机上面的蓝牙设备呢,我们使用winsock搜索蓝牙设备,请见代码分析
#include "stdafx.h"
#include <winsock2.h>
#include <ws2bth.h>
#pragma comment(lib,"ws2_32.lib")
int _tmain(int argc, _TCHAR* argv[])
{
// 初始化winsock
WSADATA wsaData;
if( WSAStartup( MAKEWORD(2,2), &wsaData ) != 0 )
{
_tprintf(_T("WSAStartup failed with error code: %d\n"), WSAGetLastError());
return 1;
}
// 初始化蓝牙枚举结构
DWORD dwWsaqsLen = sizeof(WSAQUERYSET);
LPWSAQUERYSET lpWsaqs = (LPWSAQUERYSET)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwWsaqsLen);
lpWsaqs->dwSize = sizeof(WSAQUERYSET);
lpWsaqs->dwNameSpace = NS_BTH;
// 开始枚举蓝牙设备
DWORD dwWsaqsFlags = LUP_CONTAINERS | LUP_FLUSHCACHE | LUP_RETURN_NAME | LUP_RETURN_ADDR;
HANDLE hService;
if(WSALookupServiceBegin(lpWsaqs, dwWsaqsFlags, &hService) != SOCKET_ERROR)
{
bool bFinished = false;
while(!bFinished)
{
if(WSALookupServiceNext(hService, dwWsaqsFlags, &dwWsaqsLen, lpWsaqs) == NO_ERROR)
{
SOCKADDR_BTH *saBth = (SOCKADDR_BTH*)lpWsaqs->lpcsaBuffer->RemoteAddr.lpSockaddr;
BTH_ADDR bthAddr = saBth->btAddr;
_tprintf(_T("\n发现蓝牙设备: \n"));
_tprintf(_T("------------------------\n"));
_tprintf(_T("NAP: 0x%04X SAP: 0x%08X 设备名称: %s\n"), GET_NAP(bthAddr), GET_SAP(bthAddr), lpWsaqs->lpszServiceInstanceName);
}
else
{
// 错误处理
switch(WSAGetLastError())
{
// 所给缓冲区过小,重新申请
case WSAEFAULT:
HeapFree(GetProcessHeap(), 0, lpWsaqs);
lpWsaqs = (LPWSAQUERYSET)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwWsaqsLen);
break;
// 没有更多蓝牙设备了
case WSA_E_NO_MORE:
bFinished = true;
break;
default:
//bFinished = true;
break;
}
}
}
WSALookupServiceEnd( hService );
}
// 释放资源
HeapFree(GetProcessHeap(), 0, lpWsaqs);
WSACleanup();
return 0;
}
使用WinSock连接到远程蓝牙设备
要结束对Winsock服务的使用,调用WSACleanup函数。在程序中对每个成功调用的WSAStartup都必须对应地调用WSACleanup。
- 【热门技术】Winsock 搜索蓝牙设备
- [Bluetooth(SDK)]使用WinSock搜索蓝牙设备
- [Bluetooth(SDK)]使用WinSock搜索蓝牙设备
- 编程代码分析-使用winsock搜索蓝牙设备
- 基于visual c++之windows核心编程代码分析(56)使用winsock搜索蓝牙设备
- 基于visual c++之windows核心编程代码分析(56)使用winsock搜索蓝牙设备
- 基于visual c++之windows核心编程代码分析(56)使用winsock搜索蓝牙设备
- 基于visual c++之windows核心编程代码分析(56)使用winsock搜索蓝牙设备
- 【热门技术】HFP蓝牙应用协议
- 蓝牙通信-搜索附近的蓝牙设备
- [Android蓝牙]搜索周围蓝牙设备
- 搜索附近的蓝牙设备
- Android 蓝牙Bluetooth搜索设备。
- Android6.0蓝牙搜索设备
- Android 搜索不到蓝牙设备
- 手机蓝牙搜索Beacon设备
- [Bluetooth]使用WinSock连接到远程蓝牙设备
- WM蓝牙开发--搜索周围的设备
- IT情书
- JQuery常用代码收藏
- C#调用C++dll 中具有高维指针参数的接口函数
- hdu1001
- EXCEL小技巧
- 【热门技术】Winsock 搜索蓝牙设备
- 如何在Android中设置铃声+震动
- MyEclipse中消除frame引起的“the file XXX can not be found."的提示
- Direct3d 设备丢失 (device lost)
- 约瑟夫环问题变形——循环数到的数中,若某一位是给定数D,则踢出此人。
- jsp九大内置对象之(一)request
- 上学和就业(一)
- 上学和就业(二)
- 解决 Control.Invoke 必须用于与在独立线程上创建的控件交互。在智能设备上的(c# / PDA)