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

隨筆 - 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>
            日韩一级精品视频在线观看| 欧美在线精品一区| 亚洲欧美另类久久久精品2019| 一区二区三区产品免费精品久久75| 在线观看欧美成人| 亚洲第一精品久久忘忧草社区| 影音先锋久久| 狠狠色丁香久久综合频道| 国产九区一区在线| 嫩草影视亚洲| 欧美精品xxxxbbbb| 国产精品久久二区| 国产一级精品aaaaa看| 亚洲福利视频三区| 欧美三日本三级少妇三2023| 国产精品美女久久久浪潮软件| 国产麻豆日韩欧美久久| 在线日韩成人| 亚洲网址在线| 久久亚洲一区二区| 亚洲精品影视| 久久精品72免费观看| 欧美日本不卡| 狠狠噜噜久久| 亚洲综合三区| 老司机aⅴ在线精品导航| 欧美日韩国产成人在线91| 国产精品无码永久免费888| 亚洲国产精品黑人久久久| 亚洲女人av| 亚洲高清av| 在线一区二区三区四区五区| 久久久久久一区| 国产精品午夜国产小视频| 亚洲精品女人| 噜噜噜91成人网| 亚洲欧美国产高清| 欧美日韩视频专区在线播放 | 老司机免费视频一区二区| 欧美日本免费| 亚洲福利视频一区二区| 欧美在线首页| 在线一区二区三区做爰视频网站 | 尤物精品在线| 欧美有码在线观看视频| 日韩午夜中文字幕| 免费影视亚洲| 亚洲电影视频在线| 久久婷婷麻豆| 国产尤物精品| 国产欧美va欧美不卡在线| 亚洲成色最大综合在线| 香蕉成人久久| 一本不卡影院| 欧美喷潮久久久xxxxx| 亚洲区欧美区| 亚洲第一黄色| 免费成人黄色av| 在线观看欧美视频| 久久夜色精品国产噜噜av| 欧美亚洲免费电影| 国产一区二区成人久久免费影院| 欧美一区二粉嫩精品国产一线天| 国产精品99久久久久久久vr| 欧美涩涩网站| 性做久久久久久久久| 亚洲欧美www| 国内精品免费午夜毛片| 久久午夜激情| 久久综合久久美利坚合众国| 在线观看中文字幕不卡| 欧美激情第二页| 欧美理论视频| 性做久久久久久免费观看欧美 | 夜夜躁日日躁狠狠久久88av| 欧美日韩精品是欧美日韩精品| 亚洲九九九在线观看| 亚洲精品一区在线| 国产精品天美传媒入口| 久久久国产一区二区三区| 久久精品视频网| 日韩视频在线观看免费| 中国成人黄色视屏| 激情另类综合| 亚洲精品国产精品乱码不99按摩| 欧美日韩一区二区三区免费看| 亚洲免费一在线| 久久国产精品99国产| 亚洲精品乱码久久久久久久久| 亚洲国产欧美一区二区三区久久| 欧美日韩国产专区| 久久精品国产久精国产一老狼| 久久亚洲图片| 亚洲已满18点击进入久久| 欧美一级精品大片| 日韩午夜三级在线| 欧美一区二区私人影院日本 | 亚洲黄一区二区| 一区二区日韩伦理片| 国外成人免费视频| 亚洲美女av电影| 在线日韩电影| 午夜精品久久一牛影视| 亚洲精品中文字幕女同| 亚洲欧美日韩一区| 亚洲精品一区二区三区蜜桃久| 羞羞视频在线观看欧美| 国产精品99久久久久久白浆小说| 亚洲一区二区三区中文字幕在线 | 国产日韩在线播放| 亚洲激情在线观看| 在线免费观看日韩欧美| 亚洲一区二区免费看| 亚洲免费av电影| 久久亚洲国产精品一区二区| 香蕉乱码成人久久天堂爱免费| 欧美大片免费观看在线观看网站推荐| 午夜亚洲一区| 国产精品扒开腿做爽爽爽视频| 欧美成人69av| 国产一区二区久久| 亚洲免费一区二区| 亚洲宅男天堂在线观看无病毒| 欧美高清视频www夜色资源网| 麻豆国产va免费精品高清在线| 国产欧美日韩综合一区在线观看| 亚洲精品一二| 在线视频你懂得一区| 欧美激情第二页| 亚洲激情女人| 99视频在线观看一区三区| 美日韩免费视频| 欧美激情精品久久久久久蜜臀 | 欧美国产一区二区| 你懂的国产精品| 一区在线视频| 久久久久五月天| 蜜臀va亚洲va欧美va天堂| 国产一级揄自揄精品视频| 欧美一区二区三区在线看| 久久久人人人| 亚洲国产mv| 欧美第一黄色网| 亚洲精品国产精品国自产观看| 日韩视频免费观看高清完整版| 欧美成人午夜视频| 亚洲精品韩国| 午夜精品久久久| 国产一区二区毛片| 米奇777超碰欧美日韩亚洲| 亚洲国产婷婷| 午夜精品一区二区三区电影天堂| 国产美女精品视频| 久久久久免费视频| 亚洲国产第一| 久久综合激情| 亚洲美女在线国产| 欧美影院在线| 亚洲国产精品v| 欧美体内she精视频| 亚洲一区二区精品在线| 久久男人av资源网站| 亚洲全部视频| 国产精品拍天天在线| 久久久久久噜噜噜久久久精品| 亚洲国产精品第一区二区| 亚洲综合色婷婷| 亚洲第一在线综合网站| 尤妮丝一区二区裸体视频| 亚洲欧洲一区二区天堂久久| 欧美日韩另类视频| 午夜欧美不卡精品aaaaa| 免费试看一区| 亚洲一区免费看| 亚洲国产第一| 国产精品午夜在线观看| 久久综合久久88| 亚洲性视频网站| 亚洲国产精品va在线看黑人 | 免费亚洲一区| 亚洲免费中文| 亚洲三级色网| 国产一区清纯| 欧美性猛交视频| 麻豆精品视频在线| 午夜精品久久久久久久蜜桃app| 亚洲国产人成综合网站| 久久精品国产成人| 亚洲欧美日韩电影| 一本综合精品| 亚洲电影欧美电影有声小说| 国产精品亚洲视频| 欧美三级日本三级少妇99| 久久亚洲国产精品日日av夜夜| 正在播放亚洲| 亚洲精选一区| 亚洲国产专区| 欧美成人激情视频| 老司机一区二区| 久久免费少妇高潮久久精品99|