专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Wireless

PC程序为何搜索不到蓝牙设备

发布时间:2010-06-14 16:40:44 文章来源:www.iduyao.cn 采编人员:星星草
PC程序为什么搜索不到蓝牙设备?
PC为XP SP3,ThinkPad SL400,自带有蓝牙功能,现在我在PC旁边打开手机蓝牙,使用PC的蓝牙搜索,可以搜索到手机蓝牙。
但是我自己编写的程序为什么就搜索不到呢?代码如下:
C/C++ code

int _tmain(int argc, _TCHAR* argv[])
{
    WSADATA wsaData;
    DWORD dwResult;
    HANDLE hLookup = 0;
    WSAQUERYSET lpRestrictions;
    GUID guid = SVCID_HOSTNAME;
    dwResult = WSAStartup(MAKEWORD(2,2), &wsaData);

    if (dwResult != 0)
    {
        printf("Cannot startup Winsock, error code %d\n", dwResult);
        exit(1);
    }
    else
        printf("WSAStartup is OK!\n");

    ZeroMemory(&lpRestrictions, sizeof(WSAQUERYSET));
    lpRestrictions.dwSize = sizeof(WSAQUERYSET);
    lpRestrictions.lpServiceClassId = &guid;

    dwResult = WSALookupServiceBegin(&lpRestrictions, LUP_RETURN_NAME, &hLookup);
    if (dwResult != SOCKET_ERROR)
    {
        DWORD dwLength = 0;
        WSAQUERYSET * pqs = NULL;

        printf("WSALookupServiceBegin() is OK!\r\n");

        pqs = (WSAQUERYSET *) malloc(sizeof(WSAQUERYSET) + 100);
        dwLength = sizeof(WSAQUERYSET) + 100;

        do
        {
            if (WSALookupServiceNext(hLookup, 0, &dwLength, pqs) != 0)
            {
                dwResult = WSAGetLastError();
                if((dwResult == WSA_E_NO_MORE) || (dwResult == WSAENOMORE))
                {
                    printf("No more record found!\n");
                    break;
                }
                printf("WSALookupServiceNext() failed with error code %d\n", WSAGetLastError());
            }
            else
            {
                dwResult = 0;
                printf("WSALookupServiceNext() looks fine!\r\n");
            }

            if (dwResult == WSAEFAULT)
            {
                if (pqs)
                {
                    printf("Freeing pqs...\r\n");
                    free(pqs);
                }

                // Reallocate

                pqs = (WSAQUERYSET *) malloc(dwLength);
                if (!pqs)
                {
                    printf("Could not allocate memory: %d\n", GetLastError());
                    exit(2);

                }
                else
                {
                    printf("Memory allocated for pqs successfully!\r\n");
                    continue;
                }
            }

            // Output it since we have it now
            if ((dwResult == 0) && (pqs))
            {
                printf("  Service instance name: %S\n", pqs->lpszServiceInstanceName);
                printf("  Name space num: %d\r\n", pqs->dwNameSpace);
                printf("  Num of protocols: %d\r\n", pqs->dwNumberOfProtocols);
                //printf("  Version: %d\r\n", pqs->lpVersion->dwVersion);
            }
        } while ((dwResult != WSA_E_NO_MORE) && (dwResult != WSAENOMORE));

        // clean-up

        free(pqs);
        if(WSALookupServiceEnd(hLookup) == 0){
            printf("hLookup handle was released!\n");
        }
        else{
            printf("WSALookupServiceEnd(hLookup) failed with error code %d\n", WSAGetLastError());
        }

    }
    else
    {
        printf("Error on WSALookupServiceBegin: %d\n", WSAGetLastError());
        exit(3);
    }

    if(WSACleanup() == 0){
        printf("WSACleanup() is OK!\n");
    }
    else{
        printf("WSACleanup() failed with error code %d\n", WSAGetLastError());
    }

    printf("按回车键退出!\n");
    char c = getchar();
    return 0;
}




搜索到的结果一直是:
WSAStartup is OK
WSALookupServiceBegin() is OK!
WSALookupServiceNext() looks fine!
  Service instance name:FHJUN2007 //这是该PC的电脑名,应该是手机的呀
  Name space num:12 //应该是16(NS_BTH)吧,而不是12(NS_DNS)
  Num of protocols:0
No more record found!
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: