最近在设计一个解决方案,有个问题不懂,请前辈们指教!
看别人说蓝牙可以和WINSOCK联合使用,SOCKET server_socket = socket (AF_BT, SOCK_STREAM, BTHPROTO_RFCOMM);
但我不太明白底层是怎么操作的?这样是不是相当于蓝牙设备就作为一个节点,可以通过SOCKET连入互联网,与一个公网IP的服务器进行连接了?而不用耗GPRS流量?但蓝牙是一种近距离无线通信方式,如果前面说的成立,就可以实现远距离无线通信了,这就让我疑惑了?
还是说两边必须是对等的蓝牙设备?然后通过SOCKET,一边做服务端,一边做客户端通信?只能近距离连接,通过winsock建立类似微微网那种小距离的连接?
求解前辈释疑?不吝赐教,十分感谢!
------解决方案--------------------
楼主你说的有些是没错的蓝牙是近距离无线网络,蓝牙通讯两边必须是对等的蓝牙设备
1、不管在你编程是否使用socket,最终你只能在几个蓝牙设备间通讯。一个蓝牙设备不可能跟没有蓝牙的设备通讯。
2、假设现在你有一个有蓝牙的笔记本电脑,并且在你的笔记本上除了蓝牙再也没有其他的上网设备的了,那么如果你想要蓝牙上互联网,你必须还得购买另一个具有蓝牙的辅助上网的设备,这个设备也许是个蓝牙手机、或者是一个蓝牙网关等等。
如果你买的是蓝牙手机,那么你的上网途径是:笔记本蓝牙------>手机蓝牙------>手机GSM或者3G网络----> 互联网
如果是蓝牙网关那么你的上网途径是:笔记本蓝牙------>蓝牙网关------>蓝牙网关上的网口----> ADSL猫----->互联网
由上面的例子我想你应该知道蓝牙本质就是给你提供了一根短距离的电缆线而已,除此之外没有别的附加功能
这好比你买个一个台式机的无线网卡(不是3G上网卡),你说你就能实现免费的远程网络了吗?呵呵,显然,如果你不去再买一个带路由器功能的ADSL猫,再到电信去办理一个宽带业务,你是不可能通过你的无线网卡实现远距离无线通讯的。
那么既然蓝牙是一个硬件设备,那么就必须要有驱动程序去实现蓝牙的协议、并且对上端的应用层开发编程的接口,微软的蓝牙编程接口的核心就是你说的那个socket,通过这个socket你可以搜索周围的蓝牙设备,连接周围的蓝牙设备、给连接的蓝牙设备发送数据等等
这个socket 跟互联网压根就没有什么关系。
另外蓝牙的服务端和客户端也是只相对的概念,一个蓝牙设备既可以做服务器也可以做客户端。
比如你的蓝牙手机一边通过蓝牙的FTP获取别人蓝牙手机上的文件(这时显然你在做FTP客户端),又在让别的蓝牙手机从你手机上获取文件(这时显然你在做FTP服务器端),如果我问你你的蓝牙是服务器还是客户端你怎么回答我能?