青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 2, 文章 - 73, 評論 - 60, 引用 - 0
數據加載中……

Windows Mobile中如何建立GPRS連接以便Socket能正常通信

 

【版   本】

1.0.0

【操作系統】

Windows Mobile 5.0

【作   者】

謝紅偉·chrys ·chrys@163.com ·http://www.howa.com.cn

【開發日期】

2007-12-11 01:23:56

 

最近編寫一個醫療項目的程序,需要用 Windows Mobile 來做通信處理,需要將手機端的數據通過GPRS傳送至公網上的一個服務器上。數據傳輸我采用的是socket,用數據線+ActiveSync調試通過,數據傳輸正常,在準備將軟件提交給質檢部門的時候,用真正的GPRS來做通信測試時,問題出來了,連接始終建立不了,但用手機的IE瀏覽器卻能正常打開網頁,而且奇怪的是只要用IE瀏覽器成功訪問過一次網頁,我的 socket 就能正常進行數據通信,看來傳說中的GPRS常連接被我誤解了。

手機開通GPRS以后,我們的socket 程序還不能直接建立網絡連接,需要用連接管理器來獲取當前可用連接,并自動選擇一個最佳的連接途徑,然后啟用這個連接,在連接啟動成功以后再用socket 進行網絡連接方可正常進行。大概GPRS撥號和連接過程就是在這里自動進行的吧。源代碼中封裝了一個連接管理的類和測試代碼,可以清楚地看到Windows Mobile socket 編程之前到底需要做什么樣的操作。

 

首先需要枚舉當前可用的連接

void CConnectManager::EnumNetIdentifier ( OUT CStringArray &StrAry )

{

       CONNMGR_DESTINATION_INFO networkDestInfo = {0};

 

       // 得到網絡列表

       for ( DWORD dwEnumIndex=0; ; dwEnumIndex++ )

       {

              memset ( &networkDestInfo, 0, sizeof(CONNMGR_DESTINATION_INFO) );

              if ( ConnMgrEnumDestinations ( dwEnumIndex, &networkDestInfo ) == E_FAIL )

              {

                     break;

              }

              StrAry.Add ( networkDestInfo.szDescription );

       }

}

 

接下來找到“Internet”這個連接,可用遠程URL映射的方式來完成,這樣可以讓系統自動選取一個最好的連接。

int CConnectManager::MapURLAndGUID ( LPCTSTR lpszURL, OUT GUID &guidNetworkObject, OUT CString *pcsDesc/*=NULL*/ )

{

       if ( !lpszURL || lstrlen(lpszURL) < 1 )

              return FALSE;

 

       memset ( &guidNetworkObject, 0, sizeof(GUID) );

       int nIndex = 0;

       HRESULT hResult = ConnMgrMapURL ( lpszURL, &guidNetworkObject, (DWORD*)&nIndex );

       if ( FAILED(hResult) )

       {

              nIndex = -1;

              DWORD dwLastError = GetLastError ();

              AfxMessageBox ( _T("Could not map a request to a network identifier") );

       }

       else

       {

              if ( pcsDesc )

              {

                     CONNMGR_DESTINATION_INFO DestInfo = {0};

                     if ( SUCCEEDED(ConnMgrEnumDestinations(nIndex, &DestInfo)) )

                     {

                            *pcsDesc = DestInfo.szDescription;

                     }

              }

       }

 

       return nIndex;

}

 

以下代碼是用來啟用指定編號的連接

BOOL CConnectManager::EstablishConnection ( DWORD dwIndex )

{

       ReleaseConnection ();

 

       // 得到正確的連接信息

       CONNMGR_DESTINATION_INFO DestInfo = {0};

       HRESULT hResult = ConnMgrEnumDestinations(dwIndex, &DestInfo);

       BOOL bRet = FALSE;

       if(SUCCEEDED(hResult))

       {

              // 初始化連接結構

              CONNMGR_CONNECTIONINFO ConnInfo;

 

              ZeroMemory(&ConnInfo, sizeof(ConnInfo));

              ConnInfo.cbSize = sizeof(ConnInfo);

              ConnInfo.dwParams = CONNMGR_PARAM_GUIDDESTNET;

              ConnInfo.dwFlags = CONNMGR_FLAG_PROXY_HTTP | CONNMGR_FLAG_PROXY_WAP | CONNMGR_FLAG_PROXY_SOCKS4 | CONNMGR_FLAG_PROXY_SOCKS5;

              ConnInfo.dwPriority = CONNMGR_PRIORITY_USERINTERACTIVE;

              ConnInfo.guidDestNet = DestInfo.guid;

              ConnInfo.bExclusive     = FALSE;

              ConnInfo.bDisabled = FALSE;

 

              DWORD dwStatus = 0;

              hResult = ConnMgrEstablishConnectionSync(&ConnInfo, &m_hConnection, 10*1000, &dwStatus );

              if(FAILED(hResult))

              {

                     m_hConnection = NULL;

              }

              else bRet = TRUE;

       }

 

       return bRet;

}

 

為了確保連接是否真正可用,需要檢測連接狀態,在規定的時間內如果未取得“連接成功”的狀態,則認為連接未能正常啟用,可能需要配置手機的連接管理器界面

BOOL CConnectManager::WaitForConnected ( int nTimeoutSec, DWORD *pdwStatus/*=NULL*/ )

{

       DWORD dwStartTime = GetTickCount ();

       BOOL bRet = FALSE;

       while ( GetTickCount ()-dwStartTime < (DWORD)nTimeoutSec * 1000 )

       {

              if ( m_hConnection )

              {

                     DWORD dwStatus = 0;

                     HRESULT hr = ConnMgrConnectionStatus ( m_hConnection, &dwStatus );

                     if ( pdwStatus ) *pdwStatus = dwStatus;

                     if ( SUCCEEDED(hr) )

                     {

                            if ( dwStatus == CONNMGR_STATUS_CONNECTED )

                            {

                                   bRet = TRUE;

                                   break;

                            }

                     }

              }

              Sleep ( 100 );

       }

 

       return bRet;

}

 

至此,我們的連接啟用工作已經做完了,我們可以用我們熟悉的 socket 來編寫網絡通信程序了。下面是一個測試 socket 測試網絡連接是否能正常建立的例子:

SetWaitCursor ();

CSocket sock;

sock.Create ();

if ( sock.Connect ( _T("www.baidu.com"), 80 ) )

{

       RestoreCursor ();

       AfxMessageBox ( _T("Connect to www.baidu.com successfully"), MB_ICONINFORMATION );

}

else

{

       RestoreCursor ();

       AfxMessageBox ( _T("Connect to www.baidu.com failed") );

}

 

GPRSDemo.exe 的使用

程序啟動以后出現如下界面:

 

連接可用性 檢測連接管理器是否可用

映射URL – 是讓系統自動尋找一個最好的連接

枚舉網絡標識符 將當前系統中所有可用的連接都會被枚舉出來

連接網絡 將枚舉出來的連接選中的那個連接進行連接啟用操作。

連接狀態 表示可以獲取到當前連接的狀態;

連接到公網測試 利用 www.baidu.com 來測試連接是否已經正常啟動。

 

操作步驟:

可以直接按“枚舉網絡標識符”,程序將所有當前在用的網絡枚舉出來并添加到 ListBox 控件中;

連接網絡。選擇一個連接(例如:Internet),按“連接網絡”按鈕,當提示 Connection net successfully 表示連接已經正常啟用了。

按“連接到公網測試”按鈕,軟件自動和 www.baidu.com 進行連接測試。

 

源代碼下載地址:http://www.pudn.com/downloads94/sourcecode/embed/detail373151.html

posted on 2007-12-25 14:51 郭天文 閱讀(2176) 評論(4)  編輯 收藏 引用 所屬分類: VC++Windows Mobile

評論

# re: Windows Mobile中如何建立GPRS連接以便Socket能正常通信  回復  更多評論   

你好 !最近我也在做這方面的工作 對于你提供的這些資料很感興趣。能不能將你的GPRSDemo程序發給我一份。
期待!!!
lyong757@163.com
2009-08-28 11:39 | lyong757

# re: Windows Mobile中如何建立GPRS連接以便Socket能正常通信  回復  更多評論   

你好! 能不能將GPRSDemo程序也發給我一份 不勝感激!!!
xyx_303@163.com
2009-12-23 10:54 | xyx_303

# re: Windows Mobile中如何建立GPRS連接以便Socket能正常通信  回復  更多評論   

776958525@qq.com 也給我一份吧 謝謝啊
2010-04-21 19:54 | xyz_302

# re: Windows Mobile中如何建立GPRS連接以便Socket能正常通信  回復  更多評論   

我最近也在做這方面的編程,希望你能發一份源代碼給我,我的電子郵件是firb_herry@163.com,謝謝了
2010-05-05 17:03 | firb
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            在线观看日产精品| 亚洲国产精品久久久| 午夜精品久久久久久久| 久久午夜av| 久久精品亚洲精品| 亚洲国产综合视频在线观看| 欧美专区在线播放| 亚洲成色www8888| 国产日产欧美a一级在线| 亚洲欧美日韩精品久久久久| 欧美中在线观看| 亚洲人成在线免费观看| 欧美日韩国产色视频| 亚洲社区在线观看| 欧美成人午夜| 亚洲欧美视频在线观看视频| 久久激情网站| 亚洲欧洲一区二区天堂久久| 欧美日韩一区二区在线播放| 小黄鸭精品aⅴ导航网站入口| 老牛影视一区二区三区| 中国成人在线视频| 在线观看日韩av先锋影音电影院| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲一区二区三区精品在线观看| 欧美大片国产精品| 久久婷婷激情| 久久久精品一区| 91久久精品一区二区别| 国产亚洲精久久久久久| 欧美色图天堂网| 欧美日韩国产系列| 欧美日韩国产综合网| 亚洲巨乳在线| 欧美日韩在线一区二区| 久久婷婷国产综合国色天香| 久久av一区二区三区亚洲| 一本一本久久a久久精品综合妖精| 亚洲精品一区在线观看| 亚洲高清不卡av| 久久亚洲综合色一区二区三区| 欧美一区二粉嫩精品国产一线天| 亚洲精品中文字| 亚洲视频香蕉人妖| 欧美一区二区三区免费在线看| 午夜一区在线| 欧美综合国产精品久久丁香| 欧美亚洲日本一区| 免费观看一区| 99视频一区二区三区| 亚洲高清一区二| av不卡免费看| a91a精品视频在线观看| 亚洲视频在线一区| 午夜免费在线观看精品视频| 欧美在线亚洲| 欧美福利视频| 一本一道久久综合狠狠老精东影业| 最新中文字幕亚洲| 亚洲综合第一页| 久久精品人人做人人爽电影蜜月| 精品动漫3d一区二区三区| 亚洲国产精品久久精品怡红院 | 先锋影音久久久| 久久久91精品国产一区二区三区 | av不卡在线看| 亚洲欧美怡红院| 久久久综合激的五月天| 欧美日韩dvd在线观看| 久久精品五月婷婷| 亚洲精品日韩在线观看| 先锋亚洲精品| 国产精品黄色| 国产揄拍国内精品对白| 一本色道久久综合| 蜜月aⅴ免费一区二区三区| 亚洲男同1069视频| 欧美日本在线| 国产资源精品在线观看| 欧美一区二区网站| 一本不卡影院| 欧美乱人伦中文字幕在线| 在线高清一区| 久久国产成人| 午夜视频在线观看一区二区| 欧美日韩在线播| 亚洲美女啪啪| 亚洲区国产区| 欧美日韩国产片| 亚洲欧美精品一区| 亚洲欧美成人网| 国产自产高清不卡| 久久阴道视频| 免费久久精品视频| 99精品视频免费在线观看| 欧美激情免费在线| 久久久亚洲欧洲日产国码αv| 在线成人性视频| 免费观看欧美在线视频的网站| 久久久99精品免费观看不卡| 精品动漫一区二区| 欧美激情按摩在线| 一本色道久久综合亚洲精品婷婷| 欧美成人免费小视频| 亚洲乱亚洲高清| 亚洲精品欧美专区| 久久久www成人免费精品| 久久久久www| 欧美日韩国产在线播放| 欧美日韩免费一区二区三区视频 | 中文精品视频一区二区在线观看| 亚洲大黄网站| 亚洲精品免费在线播放| 久久久久九九九九| 国产综合色产| 欧美国产成人精品| 欧美精品免费播放| 日韩视频一区| 亚洲欧美国产一区二区三区| 亚洲精品一区二区三区四区高清| 亚洲一区二区三区欧美| 一本色道久久综合亚洲91| 欧美亚洲专区| 亚洲久久一区| 久久久精品一区| 亚洲一区二区三区在线看| 欧美亚洲综合久久| 亚洲综合视频在线| 亚洲午夜激情网站| 永久免费视频成人| 久久久久9999亚洲精品| 久久久噜噜噜久噜久久| 黄色亚洲精品| 亚洲无亚洲人成网站77777| 在线欧美一区| 亚洲欧洲av一区二区| 亚洲欧美日韩在线不卡| 麻豆精品精华液| 性色一区二区三区| 国产精品久久毛片a| 亚洲国产精品一区| 亚洲国产欧美在线人成| 免费成人网www| 欧美激情中文字幕乱码免费| 在线播放国产一区中文字幕剧情欧美| 久久夜色精品国产亚洲aⅴ | 久久久久综合一区二区三区| 国产人妖伪娘一区91| 中文国产成人精品| 亚洲免费视频观看| 欧美日韩一区二区三区在线视频| 免费看亚洲片| 一区二区三区四区蜜桃| 久久久xxx| 在线国产日韩| 老司机午夜精品| 亚洲精品视频在线看| 亚洲国产精品一区二区尤物区| 欧美激情麻豆| 亚洲一区二区三区中文字幕在线| 久久久久久久久久久久久9999| 亚洲精品日本| 国内成人精品2018免费看| 国产精品大全| 亚洲男女毛片无遮挡| 午夜免费电影一区在线观看| 亚洲国产美女精品久久久久∴| 欧美日本亚洲视频| 亚洲国内在线| 亚洲欧美视频在线| 麻豆av福利av久久av| 午夜欧美大片免费观看 | 欧美一二三视频| 午夜精品福利电影| 欧美午夜一区二区| 国产一区二区三区直播精品电影 | 欧美在线观看你懂的| 欧美激情视频在线播放| 亚洲第一在线综合网站| 国内精品久久久久久 | 欧美精品麻豆| 欧美中文字幕在线| 欧美日韩国产影片| 亚洲一区二区av电影| 欧美色欧美亚洲高清在线视频| 亚洲大胆女人| 99精品国产热久久91蜜凸| 欧美日韩成人在线视频| 日韩视频中文| 欧美中日韩免费视频| 欧美啪啪一区| 亚洲精品国精品久久99热一| 国产婷婷成人久久av免费高清| 久久五月天婷婷| av成人手机在线| 先锋影院在线亚洲| 亚洲精品一区二区三区福利| 欧美日韩亚洲一区二区三区在线观看| 亚洲性av在线| 亚洲一区二区三区免费在线观看|