Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Winsock远程设备发现_C++_Windows_Winapi_Bluetooth_Winsock - Fatal编程技术网

C++ Winsock远程设备发现

C++ Winsock远程设备发现,c++,windows,winapi,bluetooth,winsock,C++,Windows,Winapi,Bluetooth,Winsock,我是winsock新手,希望在我的项目中使用蓝牙 我编写了一个简单的代码,从在线资源中获取帮助以查找远程设备 它应该打印远程设备的名称,但它会打印一些十六进制值,我想…我不知道那是什么 代码是 #include "stdafx.h" #include<iostream> #include<winsock2.h> #include<ws2bth.h> #include<bluetoothapis.h> #include<stdlib.h>

我是winsock新手,希望在我的项目中使用蓝牙

我编写了一个简单的代码,从在线资源中获取帮助以查找远程设备

它应该打印远程设备的名称,但它会打印一些十六进制值,我想…我不知道那是什么

代码是

#include "stdafx.h"
#include<iostream>
#include<winsock2.h>
#include<ws2bth.h>
#include<bluetoothapis.h>
#include<stdlib.h>
using namespace std;

#define SUCCESS 0

#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "irprops.lib")

int main()
{
    WSADATA data;
    int result;
    result = WSAStartup(MAKEWORD(2, 2), &data);
    if (result != SUCCESS)
    {
        cout << "error occured while initialising winsock...";
        exit(result);
    }
    cout << "winsock initialisation successful\n";
    WSAQUERYSET queryset;
    memset(&queryset, 0, sizeof(WSAQUERYSET));
    queryset.dwSize = sizeof(WSAQUERYSET);
    queryset.dwNameSpace = NS_BTH;
    HANDLE hLookup;
    result = WSALookupServiceBegin(&queryset, LUP_CONTAINERS, &hLookup);
    if (result != SUCCESS)
    {
        cout << "error in initialising look up service\n";
        exit(result);
    }
    cout << "initialising lookup service successful\n";
    BYTE buffer[4096];
    memset(buffer, 0, sizeof(buffer));
    DWORD bufferLength = sizeof(buffer);
    WSAQUERYSET *pResults = (WSAQUERYSET*)&buffer;
    while (result == SUCCESS)
    {
        result = WSALookupServiceNext(hLookup, LUP_RETURN_NAME | LUP_CONTAINERS | LUP_RETURN_ADDR | LUP_FLUSHCACHE | LUP_RETURN_TYPE | LUP_RETURN_BLOB | LUP_RES_SERVICE, &bufferLength, pResults);
        if (result == SUCCESS)
        {
            //DEVICE FOUND
            LPTSTR s = pResults->lpszServiceInstanceName;
            cout << s << endl;
            Sleep(1000);
        }
    }
    WSALookupServiceEnd(hLookup);
    return 0;
} 
#包括“stdafx.h”
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
#定义成功0
#pragma注释(lib,“ws2_32.lib”)
#pragma注释(lib,“irprops.lib”)
int main()
{
WSADATA数据;
int结果;
结果=WSAStartup(MAKEWORD(2,2)和数据);
如果(结果!=成功)
{
您的字符编码(可能)不匹配。行

LPTSTR s = pResults->lpszServiceInstanceName;
扩展到

LPWSTR s = pResults->lpszServiceInstanceName;
如果将项目的字符编码设置为Unicode(默认设置)。要输出Unicode字符串,必须使用而不是
std::cout

LPCWSTR s = pResults->lpszServiceInstanceName;
wcout << s << endl;
lpcwstrs=pResults->lpszservicesinstancename;
wcout字符编码(可能)不匹配。行

LPTSTR s = pResults->lpszServiceInstanceName;
扩展到

LPWSTR s = pResults->lpszServiceInstanceName;
如果将项目的字符编码设置为Unicode(默认设置)。要输出Unicode字符串,必须使用而不是
std::cout

LPCWSTR s = pResults->lpszServiceInstanceName;
wcout << s << endl;
lpcwstrs=pResults->lpszservicesinstancename;
wcout字符编码(可能)不匹配。行

LPTSTR s = pResults->lpszServiceInstanceName;
扩展到

LPWSTR s = pResults->lpszServiceInstanceName;
如果将项目的字符编码设置为Unicode(默认设置)。要输出Unicode字符串,必须使用而不是
std::cout

LPCWSTR s = pResults->lpszServiceInstanceName;
wcout << s << endl;
lpcwstrs=pResults->lpszservicesinstancename;
wcout字符编码(可能)不匹配。行

LPTSTR s = pResults->lpszServiceInstanceName;
扩展到

LPWSTR s = pResults->lpszServiceInstanceName;
如果将项目的字符编码设置为Unicode(默认设置)。要输出Unicode字符串,必须使用而不是
std::cout

LPCWSTR s = pResults->lpszServiceInstanceName;
wcout << s << endl;
lpcwstrs=pResults->lpszservicesinstancename;

wcout现在我无法打印蓝牙地址……我正在使用……BTH_ADDR b=((SOCKADDR_BTH*)pResults->lpcsaBuffer->RemoteAddr.lpSockaddr)->btAddr;……然后我用wcout打印b……但我没有得到地址……我如何修复它?@DebeshMohanty:BTH_ADDR的定义是
typedef ULONGLONG BTH_ADDR;
(参见BluetoothAPI.h)。从C++11开始,
std::wcout
可以输出
unsigned long-long
值。为了提高可读性,您可以选择使用十六进制数字系统:
std::wcout现在我无法打印蓝牙地址………我正在使用…BTH_ADDR b=((SOCKADDR_BTH*)pResults->lpcsaBuffer->RemoteAddr.lpSockaddr)->btAddr;……然后我用wcout打印b……但我没有得到地址……我如何修复它?@DebeshMohanty:BTH_ADDR的定义是
typedef ULONGLONG BTH_ADDR;
(参见BluetoothAPI.h)。从C++11开始,
std::wcout
可以输出
unsigned long-long
值。为了提高可读性,您可以选择使用十六进制数字系统:
std::wcout现在我无法打印蓝牙地址………我正在使用…BTH_ADDR b=((SOCKADDR_BTH*)pResults->lpcsaBuffer->RemoteAddr.lpSockaddr)->btAddr;……然后我用wcout打印b……但我没有得到地址……我如何修复它?@DebeshMohanty:BTH_ADDR的定义是
typedef ULONGLONG BTH_ADDR;
(参见BluetoothAPI.h)。从C++11开始,
std::wcout
可以输出
unsigned long-long
值。为了提高可读性,您可以选择使用十六进制数字系统:
std::wcout现在我无法打印蓝牙地址………我正在使用…BTH_ADDR b=((SOCKADDR_BTH*)pResults->lpcsaBuffer->RemoteAddr.lpSockaddr)->btAddr;……然后我用wcout打印b……但我没有得到地址……我如何修复它?@DebeshMohanty:BTH_ADDR的定义是
typedef ULONGLONG BTH_ADDR;
(参见BluetoothAPI.h)。从C++11开始,
std::wcout
可以输出
unsigned long-long
值。为了使其更具可读性,可以选择使用十六进制数字系统:
std::wcout