版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
版权
rel="File-List" href="file:///C:%5CDOCUME%7E1%5Cpost%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml">
这篇文章中,我叙述一下怎样通过socket的方式搜索手机并发送文件的过程。
1.既然要使用socket,那么首先就是要建一个socket链接。
hSock := socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
这里的AF_BTH的值为32,是专用于蓝牙soket的建立
2.搜索手机和服务
Windows在驱动接口和socket中提供的Bluetooth Service Discovery Protocol(SDP)蓝牙服务发现协议。可以通过试用下面的一系列函数实现手机和服务的搜索:
WSASetService
WSALookupServiceBegin
WSALookupServiceNext
WSALookupServiceEnd
3.通过socket与手机连接以后,可以直接通过write函数往手机发送数据。
但是发送的数据如何能被手机正确的识别? 这里就要谈谈对象推送服务。
对象推送服务是支持蓝牙的设备所提供的一种服务,其GUID为'{00001105-0000-1000-8000 -00805F 9B34FB}'。 在与手机进行连接的时候,我们需要指定需要手机提供哪些服务。把服务作为connect函数的一个参数。
errCode:=connect(hSock, @MySockAddrBth, sizeof(MySockAddrBth));
其中MySockAddrBth的结构如下:
_SOCKADDR_BTH = packed record
addressFamily: WORD;
btAddr: Int64;
serviceClassId: System.TGUID;
port: ULONG;
end;
serviceClassId就用于指定服务的