c ++在函数之间共享HINTERNET

时间:2015-01-25 14:56:22

标签: c++

我试图将全局HINTERNET用于某些需要互联网处理的功能。

我的代码是这样的:

static HINTERNET hInternetConnection = NULL;

void connectToInternet()
{
    HINTERNET hInternetOpen = InternetOpen(
        "CustomAgent",              // Agent
        INTERNET_OPEN_TYPE_DIRECT,  // AccessType
        NULL,                       // ProxyName
        NULL,                       // ProxyBypass
        0                           // Flags
        );
    if (GetLastError() != 0)
        return;

    hInternetConnection = InternetConnect(
        hInternetOpen,              // InternetOpen-Handle
        "http://www.example.com",   // ServerName
        INTERNET_DEFAULT_HTTP_PORT, // ServerPort
        NULL,                       // Username
        NULL,                       // Password
        INTERNET_SERVICE_HTTP,      // Service
        0,                          // Flags
        0                           // Context
        );
}

void useInternetConnection()
{
    HINTERNET httpOpenRequest = HttpOpenRequest(
        hInternetConnection,    // Internet-Handle
        "GET",                  // HTTP-Verb
        "/test.php",    // request target
        "HTTP/1.1",             // HTTP-Version
        NULL,
        NULL,
        INTERNET_FLAG_RELOAD,
        0
        );
    if (GetLastError() != 0)
        cout << "ERROR: " << GetLastError() << endl;
}

但是对于我的第二个函数useInternetConnection(),我收到错误代码6 ERROR_INVALID_HANDLE

因此无法使用一个全局HINTERNET进行功能吗?我怎么能避免这种情况? 如果我将第一个函数的返回类型更改为HINTERNET,并从我需要句柄的任何其他函数调用此函数会不会更好?

我这样做的主要想法是使用一个强硬书调制解调器的一些互联网连接问题。我运行了一些程序 - 部分同时,部分分离 - 它随机接收调制解调器崩溃并且互联网连接缺席一段时间(几秒到几小时)。 现在我尝试将所有以前的程序包装成一个大程序的功能,并分享一个互联网处理这些功能,但它似乎不起作用......我之所以不尝试通过更改connectToInternet()的返回类型来解决我的问题就像我以前的想法一样,我担心这会导致像运行多个应用程序一样的问题 - 所有人都试图访问互联网... < / p>

有什么想法吗?

0 个答案:

没有答案