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

隨筆 - 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 郭天文 閱讀(2181) 評論(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>
            欧美在线你懂的| 校园激情久久| 欧美精品成人一区二区在线观看 | 99亚洲伊人久久精品影院红桃| 亚洲日韩视频| 日韩天堂av| 亚洲肉体裸体xxxx137| 久久亚洲图片| 亚洲精品视频二区| 亚洲香蕉在线观看| 国产精品豆花视频| 久久av红桃一区二区小说| 久久久久久自在自线| 亚洲电影观看| 国产精品一级在线| 久久久久久日产精品| 99在线视频精品| 久久国产精品高清| 久久精品国产一区二区电影 | 国产永久精品大片wwwapp| 亚洲欧美在线另类| 91久久综合| 免费日韩av| 午夜视频一区二区| 一级成人国产| 欧美成人激情在线| 蜜桃av综合| 亚洲欧美综合v| 欧美日韩精品久久| 你懂的视频欧美| 久久精品国产免费观看| 亚洲愉拍自拍另类高清精品| 亚洲激情第一页| 欧美在线观看日本一区| 欧美日韩另类字幕中文| 欧美国产激情| 国产日韩欧美视频| 午夜免费久久久久| 一区二区三区免费看| 亚洲精品免费在线| 欧美国产成人精品| 国产精品亚洲第一区在线暖暖韩国| 国产日韩欧美一区二区三区在线观看| 欧美在线亚洲综合一区| 欧美另类一区二区三区| 久久乐国产精品| 亚洲第一精品夜夜躁人人爽| 可以看av的网站久久看| 久久综合成人精品亚洲另类欧美| 久久精品国产精品亚洲综合| 亚洲另类视频| 欧美一区2区三区4区公司二百| 欧美一区二区三区在线看| 亚洲欧美日韩国产精品| 国产原创一区二区| 欧美国产成人精品| 欧美专区第一页| 精品动漫3d一区二区三区| 亚洲精品国产品国语在线app| 亚洲电影毛片| 亚洲天堂av综合网| 欧美日韩 国产精品| 久久久久国产一区二区三区四区| 亚洲激情电影中文字幕| 国产精品第十页| 免费观看不卡av| 欧美精品日韩一本| 国产精品多人| 久久久高清一区二区三区| 老司机亚洲精品| 国模私拍视频一区| 亚洲精品视频免费| 亚洲国产福利在线| 欧美v亚洲v综合ⅴ国产v| 国产精品亚洲人在线观看| 欧美激情中文不卡| 欧美精品一级| 欧美激情五月| 国产一区二区三区直播精品电影| 日韩香蕉视频| 在线午夜精品| 国产精品永久免费视频| 夜夜嗨av一区二区三区四区 | 日韩午夜免费视频| 美女在线一区二区| 久久久久国产精品午夜一区| 亚洲一级电影| 欧美日韩国产小视频| 91久久久久久久久| 亚洲午夜免费视频| 国产午夜精品全部视频播放| 欧美亚洲视频| 亚洲高清激情| 裸体歌舞表演一区二区| 亚洲在线视频观看| 狂野欧美激情性xxxx| 欧美国产精品人人做人人爱| 亚洲美女少妇无套啪啪呻吟| 欧美日韩国语| 久久久久久噜噜噜久久久精品| 亚洲丰满在线| 久久国产视频网站| 日韩一区二区电影网| 国产乱码精品1区2区3区| 欧美成人精精品一区二区频| 国产精品99久久久久久白浆小说| 久久久999成人| 久久国产精品亚洲va麻豆| 亚洲欧洲一区二区天堂久久| 一区二区91| 久久久精品国产99久久精品芒果| 日韩一本二本av| 亚洲人成艺术| 亚洲精品一区二区在线| 国产亚洲一区二区三区在线播放| 欧美日韩福利在线观看| 巨胸喷奶水www久久久免费动漫| 午夜激情一区| 欧美一区亚洲二区| 欧美在现视频| 另类尿喷潮videofree| 欧美在线三区| 久久久久久久一区| 欧美在线综合| 久久男女视频| 欧美大片va欧美在线播放| 免费日韩成人| 欧美日韩p片| 欧美日韩国产综合在线| 欧美日韩一区视频| 国产精品网站在线| 在线观看亚洲精品| 欧美成人免费全部观看天天性色| 久久精品国产v日韩v亚洲| 久久综合图片| 欧美日韩精品免费看| 伊人久久婷婷色综合98网| 亚洲在线不卡| 99精品国产在热久久婷婷| 亚洲一区二区三区四区中文| 午夜精品亚洲| 欧美国产精品劲爆| 国语精品中文字幕| 国产精品二区影院| 影音先锋日韩精品| 欧美在线短视频| 日韩亚洲欧美成人| 久久女同互慰一区二区三区| 国产精品尤物| 久久精品综合一区| 亚洲欧洲日产国产综合网| 久久精品成人一区二区三区蜜臀| 欧美成年人视频| 久久精品国产欧美亚洲人人爽| 欧美三级视频在线| 欧美日韩国产首页在线观看| 1769国产精品| 欧美福利视频在线观看| 久久看片网站| 99re热这里只有精品视频| 亚洲国产一区在线观看| 一本久久综合亚洲鲁鲁| 欧美视频你懂的| 欧美激情1区2区| 91久久精品www人人做人人爽| 欧美成年网站| 欧美日韩一区在线播放| 久久国产综合精品| 久久综合久久美利坚合众国| 亚洲人成在线播放| 亚洲专区一区| 欧美吻胸吃奶大尺度电影| 亚洲国产欧美一区| 久久精品123| 麻豆成人在线播放| 亚洲另类一区二区| 午夜精品久久久久| 日韩亚洲欧美中文三级| 久久精品99| 国产一区 二区 三区一级| 欧美激情免费在线| 国产精品视频1区| 欧美激情一区二区三区在线视频观看| 欧美日韩视频一区二区| 欧美高清不卡在线| 国产精品久久综合| 亚洲一区在线免费| 欧美成人乱码一区二区三区| 久久精品日韩| 国产欧美日韩在线观看| 欧美亚洲三区| 一区二区三区四区国产精品| 黄色成人精品网站| 午夜精品区一区二区三| 中日韩午夜理伦电影免费| 欧美福利网址| 亚洲黄色性网站| 亚洲精品欧美精品| 在线视频你懂得一区| 久久在精品线影院精品国产|