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

隨筆 - 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>
            欧美福利视频网站| 国产精品视频xxx| 一区二区国产日产| 亚洲精品日韩在线| 99在线精品免费视频九九视| 亚洲狼人综合| 在线视频日本亚洲性| 日韩小视频在线观看专区| 夜夜嗨av一区二区三区网页| 亚洲一区二区三区精品动漫| 久久激情视频久久| 欧美承认网站| 国产精品爱久久久久久久| 国产精品欧美久久| 伊人成年综合电影网| 亚洲精品视频在线看| 亚洲在线观看视频| 老鸭窝亚洲一区二区三区| 亚洲欧洲一区二区在线观看| 亚洲黄一区二区| 亚洲主播在线播放| 欧美不卡视频一区发布| 国产精品久久久一区麻豆最新章节 | 国内视频一区| 一区二区视频在线观看| 亚洲精品免费一二三区| 久久av红桃一区二区小说| 久久久av毛片精品| 亚洲全黄一级网站| 久久国产精品色婷婷| 欧美日韩精品欧美日韩精品一| 国产视频久久| 中日韩美女免费视频网址在线观看 | 欧美亚洲不卡| 激情久久久久久久久久久久久久久久| 亚洲第一区在线| 午夜久久美女| 亚洲美女视频在线免费观看| 久久亚洲精品一区| 午夜精品久久久| 在线国产欧美| 亚洲欧美日韩国产中文| 欧美国产日韩亚洲一区| 欧美在线观看视频在线| 国产精品久久久久久av福利软件 | 日韩亚洲欧美成人一区| 久久伊伊香蕉| 精品电影在线观看| 欧美一区亚洲二区| 在线亚洲美日韩| 欧美日韩国产页| 日韩午夜一区| 亚洲黄色毛片| 免费不卡中文字幕视频| 在线日韩av片| 欧美成年人视频| 久久久一区二区| 在线观看欧美| 欧美国产在线电影| 欧美a一区二区| 亚洲激情第一页| 亚洲电影在线看| 欧美激情一二三区| 99视频精品在线| 亚洲免费观看高清完整版在线观看熊| 欧美黄色片免费观看| 亚洲伦理在线观看| 日韩视频在线观看国产| 欧美特黄一区| 午夜精品国产| 欧美淫片网站| 亚洲高清在线播放| 亚洲二区精品| 欧美性片在线观看| 久久成人国产精品| 久久久91精品国产一区二区精品| 伊人成年综合电影网| 欧美激情亚洲综合一区| 欧美精品久久久久久久久久| 亚洲视频一区在线| 亚洲欧美日韩综合国产aⅴ| 国内精品久久久久国产盗摄免费观看完整版 | 亚洲大黄网站| 欧美风情在线观看| 亚洲欧美99| 久久精品欧洲| 99精品福利视频| 一区二区三区日韩| 国产亚洲精品久久久久久| 美女任你摸久久| 欧美日韩国产小视频| 久久精品成人一区二区三区| 久久综合狠狠综合久久激情| 9色国产精品| 欧美一区午夜精品| 亚洲国产精品久久精品怡红院| 久久精品国产精品亚洲精品| 亚洲激情第一区| 蜜臀99久久精品久久久久久软件| 亚洲激情视频在线| 国产精品美女久久久浪潮软件| 久久久噜噜噜久久人人看| 欧美gay视频激情| 欧美一级在线播放| 久久男人av资源网站| 国产精品99久久久久久宅男| 欧美在线三级| 亚洲线精品一区二区三区八戒| 久久国产精品高清| 亚洲一区二区三区高清不卡| 久久综合亚洲社区| 欧美一区二区三区视频| 欧美精品一二三| 免播放器亚洲一区| 国产日韩亚洲欧美| 一区二区三区欧美亚洲| 日韩视频免费观看高清完整版| 久久成人一区二区| 亚洲一区影音先锋| 欧美另类久久久品| 欧美激情一区二区三区在线 | 久久午夜电影网| 久久超碰97中文字幕| 欧美视频精品在线| 亚洲品质自拍| 亚洲欧洲午夜| 女主播福利一区| 欧美国产日本韩| 亚洲国产高清在线| 久久激情婷婷| 另类激情亚洲| 一区二区三区在线观看视频| 久久国产精品高清| 噜噜噜噜噜久久久久久91| 国户精品久久久久久久久久久不卡| 亚洲欧美第一页| 欧美一区日韩一区| 国产在线精品二区| 久久精品观看| 男女av一区三区二区色多| 亚洲大胆人体在线| 免费视频亚洲| 91久久国产综合久久91精品网站| 91久久精品一区二区三区| 美女精品一区| 亚洲激情中文1区| 在线亚洲观看| 国产精品久久久久77777| 亚洲亚洲精品在线观看 | 亚洲高清不卡一区| 亚洲美女色禁图| 欧美日韩视频在线一区二区观看视频| 亚洲精品乱码久久久久久按摩观 | 亚洲私人影吧| 国产精品欧美日韩一区| 欧美在线free| 欧美岛国激情| 亚洲精品在线观| 国内揄拍国内精品久久| 久久久蜜桃精品| 91久久夜色精品国产九色| 一本色道**综合亚洲精品蜜桃冫| 欧美日在线观看| 性做久久久久久免费观看欧美| 久久久视频精品| 亚洲欧洲一区| 国产精品入口麻豆原神| 久久精品国产成人| 亚洲日本中文字幕| 久久成年人视频| 亚洲精品一区在线观看香蕉| 国产精品久久77777| 久久av一区二区三区漫画| 亚洲国产裸拍裸体视频在线观看乱了中文| 日韩视频一区二区三区| 国产精品系列在线播放| 久久婷婷人人澡人人喊人人爽 | 久久精品一区| 日韩一级在线| 麻豆九一精品爱看视频在线观看免费| 亚洲精品中文字| 国产一区二区三区视频在线观看| 欧美jjzz| 欧美专区亚洲专区| 日韩一级不卡| 欧美福利在线观看| 欧美在线视频网站| 日韩视频在线观看一区二区| 国产视频亚洲| 欧美亚一区二区| 欧美精品播放| 蜜桃av一区二区| 欧美在线视频免费播放| 亚洲精品一区二区三区四区高清| 久久免费视频网站| 午夜免费在线观看精品视频| 99国产成+人+综合+亚洲欧美| 精品69视频一区二区三区| 国产精品午夜在线观看| 国产精品h在线观看|