注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

VC 2010+蓝牙Socket编程:GetLastError=10047, "使用了与请求的协议不兼容的地址。 "  

2011-03-09 00:46:26|  分类: 蓝牙、红外、无线 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

错误信息:GetLastError=10047, "使用了与请求的协议不兼容的地址。 "

平台:Windows 2003 Server 企业版sp2

蓝牙驱动:WIDCOMM

代码如下:


 WSADATA wsa={0};
 int ret=0;

 ret=WSAStartup(MAKEWORD(2, 2), &wsa);

 SOCKET s = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
 if (s == INVALID_SOCKET)
 {
  DWORD err=GetLastError();
  return -1;
 }

 

在XP系统下,使用微软自带的蓝牙驱动,上面的代码能够正常运行!奇怪的是,在XP系统下,即使没有接入蓝牙设备,上面的代码也能正常运行,看来,Windows在执行上面的代码时,并不会去检测蓝牙设备是否存在。

然而,使用WIDCOMM却不行!

 

解决!

我仔细比较了一下XP和2003的区别。发现XP下,插入蓝牙适配器并安装驱动之后,系统会安装一个RFCOMM的TDI网络驱动。这样,上层就可以使用socket函数来访问蓝牙设备了!而2003下,系统没有这个网络服务,自然也就不能使用套接字来访问蓝牙适配器了。

 

可以在2003系统中安装xp sp2的蓝牙驱动,而不采用widcomm等第三方驱动,具体参考:

Windows Server 2003蓝牙驱动(从XP sp2系统中移植)

http://zhanyonhu.blog.163.com/blog/static/1618604420112914129407/ 

 

By:zhanyonhu

  评论这张
 
阅读(4735)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016