18,363
社区成员




#include "stdafx.h"
#include <winsock2.h>
#include <ws2bth.h>
//#include "guiddef.h"
#include "bthdef.h"
//#include "InitGuid.h"
#pragma comment(lib,"ws2_32.lib")
DEFINE_GUID(g_guidServiceClass, 0xb62c4e8d, 0x62cc, 0x404b, 0xbb, 0xbf, 0xbf, 0x3e, 0x3b, 0xbb, 0x13, 0x74);
void main()
{
// 初始化winsock
WSADATA wsaData;
if( WSAStartup( MAKEWORD(2,2), &wsaData ) != 0 )
{
_tprintf(_T("WSAStartup failed with error code: %d\n"), WSAGetLastError());
}
// 初始化蓝牙枚举结构
DWORD dwWsaqsLen = sizeof(WSAQUERYSET);
LPWSAQUERYSET lpWsaqs = (LPWSAQUERYSET)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwWsaqsLen);
ZeroMemory(lpWsaqs,sizeof(LPWSAQUERYSET));
lpWsaqs->dwSize = sizeof(WSAQUERYSET);
lpWsaqs->dwNameSpace = NS_BTH;
// 开始枚举蓝牙设备
DWORD dwWsaqsFlags = LUP_CONTAINERS | LUP_FLUSHCACHE | LUP_RETURN_NAME | LUP_RETURN_ADDR;
HANDLE hService;
BTH_ADDR bthAddr;
ZeroMemory(&bthAddr,sizeof(BTH_ADDR));
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;
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 );
_tprintf(_T("没有更多的蓝牙设备: \n"));
}
// 释放资源
// HeapFree(GetProcessHeap(), 0, lpWsaqs);
SOCKET client_socket = socket (AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
SOCKADDR_BTH sa;
memset (&sa, 0, sizeof(sa));
sa.btAddr = 0x000081000830;
sa.addressFamily = AF_BTH;
// sa.serviceClassId = g_guidServiceClass;
sa.port = 3 ;
if (connect (client_socket, (SOCKADDR *)&sa, sizeof(sa)))
{
printf("connect error code is %d\n",WSAGetLastError());
}
char sendbuf[100] = {0};
sendbuf[0] = 's';
sendbuf[1] = 'u';
sendbuf[2] = 'c';
sendbuf[3] = 'c';
sendbuf[4] = 'e';
sendbuf[5] = 's';
sendbuf[6] = 's';
send(client_socket,sendbuf,strlen(sendbuf)+1,0);
closesocket(client_socket);
CloseHandle ((LPVOID)client_socket);
WSACleanup();
}
#include "stdafx.h"
#include <winsock2.h>
#include <ws2bth.h>
#pragma comment(lib,"ws2_32.lib")
void main()
{
// 初始化winsock
WSADATA wsaData;
if( WSAStartup( MAKEWORD(2,2), &wsaData ) != 0 )
{
_tprintf(_T("WSAStartup failed with error code: %d\n"), WSAGetLastError());
}
/* // 初始化蓝牙枚举结构
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;
BTH_ADDR bthAddr;
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;
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 );
_tprintf(_T("\没有更多的蓝牙设备: \n"));
}
// 释放资源
// HeapFree(GetProcessHeap(), 0, lpWsaqs); */
SOCKET server_socket = socket (AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
SOCKADDR_BTH sa;
memset (&sa, 0, sizeof(sa));
sa.addressFamily = AF_BTH;
sa.port = 1 & 0xff;
if (bind (server_socket, (SOCKADDR *)&sa, sizeof(sa)))
{
printf("绑定失败\n");
}
if (listen (server_socket, 5))
{
printf("监听失败\n");
}
SOCKADDR_BTH sa2;
int size = sizeof(sa2);
while(1)
{
SOCKET s2 = accept (server_socket, (SOCKADDR *)&sa2, &size);
char recvbuf[100] = {0};
recv(s2,recvbuf,strlen(recvbuf)+1,0);
printf("%s\n",recvbuf);