Subscribe to Feeds Subscribe to Tweeters
14 Июн

WinApi пример подключения GPRS

Freesmska -> WinApi WinMobile -> WinApi пример подключения GPRS
Будь в курсе. Подпишись по e-mail:       

winapi примеры
Привет.
Продолжаю изучать WinApi и решил поделится с Вами примером, как создавать новое соединение с GPRS.
Данный код я вызываю, как при уже созданном открытом подключение жопореза, так и отсутствующем.
Разница только в том, что в одном случае он начинает создавать новое соединение с интернетом, в другом просто не выполняет никаких действий.

Winapi я использую для написания программ для коммуникаторов на платформе Windows Mobile 5,6. Хотя многие из них будут пахать и на более ранних.

Зная как тяжело мне по началу даются winapi, сам щас часто над каждой функцией сижу по часу, а то и дольше, решил сделать сборник готовых примеров для начинающих, да и просто для тех, кто не хочет парится, а готов использовать готовый код.


Пример соединения с интернетом на ВинМобайле.

[code lang=»cpp»]
#include "windows.h"
#include "commctrl.h"
#include "connmgr.h"
#pragma comment(lib,"cellcore.lib")

GUID GetNetworkForURL (LPCTSTR url)
{
DWORD dwIndex = 0;
GUID rv;
if (!SUCCEEDED (ConnMgrMapURL (url, &rv, &dwIndex)))
rv = GUID_NULL;

return rv;
}

HRESULT EstablishConnection (LPCTSTR url, DWORD retries, DWORD timeout, DWORD* dwStatus, HANDLE hConnection)
{
CONNMGR_CONNECTIONINFO ConnectionInfo;
ZeroMemory (&ConnectionInfo, sizeof (ConnectionInfo));
ConnectionInfo.cbSize = sizeof (ConnectionInfo);

ConnectionInfo.dwParams = CONNMGR_PARAM_GUIDDESTNET;
ConnectionInfo.dwFlags = CONNMGR_FLAG_PROXY_HTTP;
ConnectionInfo.dwPriority = CONNMGR_PRIORITY_USERINTERACTIVE;
ConnectionInfo.guidDestNet = GetNetworkForURL (url);

return ConnMgrEstablishConnectionSync (&ConnectionInfo, &hConnection, timeout, dwStatus);

}

DWORD dwStatus = 0;
HANDLE hConnection = NULL;

DWORD doConnect(LPVOID lpvoid)
{
LPCTSTR url = L"http://4pda.ru";
HRESULT hr = EstablishConnection (url, 10, 25000, &dwStatus, hConnection);
return 0;
}
[/code]

Далее в мейне или там, где вам нужно осуществить соединение пишем

[code lang=»cpp»]
HANDLE hReadThread = NULL;
DWORD dwThreadID;
if (hReadThread = CreateThread (NULL, 0, doConnect, 0, 0, &dwThreadID))
{
CloseHandle (hReadThread);
}
[/code]

Данный код позволяет создавать подключение к GPRS в отдельном потоке, что позволяет не блокировать основной поток на время подключения.

Теперь немного обсудим, что в нашем примере написано:
CreateThread — запуск функции в отдельном потоке.
doConnect — вызов функции осуществляющей подключение к GPRS.
EstablishConnection — функция осуществляющая подготовку всего необходимого для подключения.
ConnMgrEstablishConnectionSync — WinApi осуществляющая подключения интернета.
GetNetworkForURL — функция определяющая какую подсеть использовать для работы (в нашем случае интеренет).

Подробнее о ConnMgrEstablishConnectionSync и GetNetworkForURL Вы можете почитать на msdn’е.
А я свою задачу показать Вам пример работы с GPRS выполнил.

100% зрение без операций

Будь в курсе. Подпишись по e-mail:      

Один коммент по теме: “WinApi пример подключения GPRS”

  1. как всегда жутко интересно но блин и многое непонятно но буим учится и познавать вместе с тобой друг!! Спасибо огромное;)

У вас есть мнение? Оставьте свой отзыв: