在网上查了很多资料,知道蓝牙通信编程的大致流程,不过发现个很郁闷的事情,先看下面的代码:
BOOL           bRes = FALSE; 
int            iResult = 0; 
LPWSAQUERYSET  pwsaResults; 
WSAQUERYSET    wsaq;  WSADATA wsd;
WSAStartup (MAKEWORD(1,0), &wsd);
memset (&wsaq, 0, sizeof(wsaq)); 
wsaq.dwSize      = sizeof(wsaq); 
wsaq.dwNameSpace = NS_BTH; 
wsaq.lpcsaBuffer = NULL;  // initialize searching procedure 
iResult = WSALookupServiceBegin(&wsaq, 
  LUP_CONTAINERS, 
  &hLookup); 
if (iResult != 0) 

  iResult = WSAGetLastError(); 
  return iResult; 

都说使用WSALookupServiceBegin,WSALookupServiceNext,WSALookupServiceEnd三个函数基本上能完成蓝牙设备的通信问题,不过调试的时候,我发现执行到WSALookupServiceBegin函数时就失败了,错误10108,没有NS_BTH类型的服务.也就是说不支持蓝牙服务,winsock2.h中确实没有定义蓝牙,不知道要怎么处理,才能让winsock2.h支持蓝牙?
其实也有直接使用socket的方法,比起上面的来说要简单一些,不过问题还是出在winsock2.h对蓝牙的支持上.
WSADATA wsadat;
WSAStartup( MAKEWORD( 1, 0 ), & wsadat );
sock = WSASocket(AF_BTH,SOCK_STREAM,0,NULL,0,WSA_FLAG_OVERLAPPED);//执行到这里就出错
int dwRet = getsockopt(sock,SOL_IRLMP,SO_PROTOCOL_INFO,(char *)&devList,&dwListLen);
有谁做过的?指点一下,万分感谢

解决方案 »

  1.   

    Windows Mobile 5.0/6.0版上应该支持吧。
      

  2.   

      先看下相关的资源添加没?然后仔细检查下WSASocket和getsockopt每个参数的具体意义,是不是用错了,根据你的提示,还没发现其他的问题.
      

  3.   

    我是在XP SP2下用VS2005开发的,看到有人在这个环境下做过,不过没有提到环境配置相关的东西
    WSASocket和getsockopt这两个函数的参数应该没有用错,能找到的资料上都是这么用的.
    却从没有找到有相关环境配置的内容,只是说MS在XP SP2以上版本的操作系统下支持蓝牙
    不知道为什么我这里不行
      

  4.   

    查到的资料基本上都是CE下的
    难道PC上就不能做蓝牙编程?
      

  5.   

    顶你一下、我也碰到这个问题。希望互相交流,如果可以,能借你demo看看么。哈哈,就是在系统API方面调用不会,蓝牙的API不熟悉。邮箱[email protected]
     谢谢啦