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

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

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

 

【版   本】

1.0.0

【操作系統(tǒng)】

Windows Mobile 5.0

【作   者】

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

【開發(fā)日期】

2007-12-11 01:23:56

 

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

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

 

首先需要枚舉當(dāng)前可用的連接

void CConnectManager::EnumNetIdentifier ( OUT CStringArray &StrAry )

{

       CONNMGR_DESTINATION_INFO networkDestInfo = {0};

 

       // 得到網(wǎng)絡(luò)列表

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

       {

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

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

              {

                     break;

              }

              StrAry.Add ( networkDestInfo.szDescription );

       }

}

 

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

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))

       {

              // 初始化連接結(jié)構(gòu)

              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;

}

 

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

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;

}

 

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

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 的使用

程序啟動以后出現(xiàn)如下界面:

 

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

映射URL – 是讓系統(tǒng)自動尋找一個最好的連接

枚舉網(wǎng)絡(luò)標(biāo)識符 將當(dāng)前系統(tǒng)中所有可用的連接都會被枚舉出來

連接網(wǎng)絡(luò) 將枚舉出來的連接選中的那個連接進(jìn)行連接啟用操作。

連接狀態(tài) 表示可以獲取到當(dāng)前連接的狀態(tài);

連接到公網(wǎng)測試 利用 www.baidu.com 來測試連接是否已經(jīng)正常啟動。

 

操作步驟:

可以直接按“枚舉網(wǎng)絡(luò)標(biāo)識符”,程序?qū)⑺挟?dāng)前在用的網(wǎng)絡(luò)枚舉出來并添加到 ListBox 控件中;

連接網(wǎng)絡(luò)。選擇一個連接(例如:Internet),按“連接網(wǎng)絡(luò)”按鈕,當(dāng)提示 Connection net successfully 表示連接已經(jīng)正常啟用了。

按“連接到公網(wǎng)測試”按鈕,軟件自動和 www.baidu.com 進(jìn)行連接測試。

 

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

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

評論

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

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

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

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

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

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

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

我最近也在做這方面的編程,希望你能發(fā)一份源代碼給我,我的電子郵件是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>
            欧美在线观看日本一区| 欧美日韩伦理在线| 亚洲成人在线视频网站| 亚洲国产一区视频| 欧美日韩福利视频| 亚洲尤物在线视频观看| 美女诱惑一区| 中文高清一区| 激情伊人五月天久久综合| 欧美激情国产日韩| 欧美一二三区精品| 亚洲精品综合精品自拍| 欧美一区永久视频免费观看| 在线免费观看欧美| 国产精品a久久久久| 久久久亚洲国产美女国产盗摄| 欧美激情精品久久久久久变态 | 狠狠色丁香婷婷综合| 麻豆av一区二区三区久久| 一区二区国产日产| 另类图片国产| 亚洲欧美日韩视频一区| 亚洲国产欧美久久| 国产视频一区在线观看一区免费| 欧美大片在线看免费观看| 亚洲欧美日本国产有色| 亚洲国产欧美日韩精品| 久久精品成人| 亚洲一区综合| 日韩一本二本av| 极品裸体白嫩激情啪啪国产精品| 欧美日韩国产在线| 免费一区视频| 久久国产精品99久久久久久老狼| 99re6热只有精品免费观看| 榴莲视频成人在线观看| 欧美在现视频| 亚洲一区3d动漫同人无遮挡| 亚洲国产成人av| 国产亚洲综合性久久久影院| 国产精品久久综合| 欧美乱妇高清无乱码| 美女精品国产| 久久亚洲精选| 久久福利资源站| 午夜亚洲激情| 亚洲在线一区二区三区| av成人福利| 亚洲理论在线观看| 亚洲精品久久久久久久久| 欧美国产精品va在线观看| 猫咪成人在线观看| 久久久一区二区| 欧美在线观看网站| 午夜亚洲影视| 亚洲欧美日韩另类精品一区二区三区| 亚洲美女一区| 亚洲乱码一区二区| 亚洲国产三级网| 91久久精品视频| 亚洲国产日韩一级| 最新国产乱人伦偷精品免费网站| 亚洲第一精品夜夜躁人人躁| 黄页网站一区| 怡红院精品视频| 黄色av日韩| 亚洲国产精品视频一区| 亚洲国产毛片完整版 | 99在线精品免费视频九九视| 亚洲欧洲综合| 亚洲精品一区二区三区福利| 亚洲免费观看高清在线观看| 一区二区三区视频在线看| 在线视频日韩精品| 午夜国产欧美理论在线播放| 欧美一区二区视频网站| 久久九九电影| 欧美α欧美αv大片| 欧美精品国产一区| 国产精品va在线| 国产午夜精品全部视频在线播放| 国内自拍一区| 亚洲精品韩国| 亚洲一区二区在线播放| 欧美在线观看一二区| 免费日韩视频| 亚洲乱码国产乱码精品精| 一区二区激情小说| 欧美影院成年免费版| 久久午夜精品一区二区| 欧美美女bb生活片| 国产欧美一区二区三区国产幕精品| 国内自拍视频一区二区三区| 亚洲人精品午夜| 香蕉成人伊视频在线观看| 久久影院亚洲| 亚洲精品久久久蜜桃| 亚洲自啪免费| 蜜臀久久99精品久久久画质超高清| 欧美日韩国产美| 国产欧亚日韩视频| 亚洲精品一区二区三区不| 亚洲欧美日韩另类精品一区二区三区| 久久久综合精品| 日韩视频专区| 久久午夜国产精品| 国产精品av免费在线观看| 尤物精品国产第一福利三区 | 欧美一级网站| 欧美韩日一区| 国产一区二区久久久| av不卡在线看| 另类激情亚洲| 在线综合亚洲欧美在线视频| 玖玖国产精品视频| 国产精品综合| 在线综合欧美| 欧美成人精品在线播放| 妖精视频成人观看www| 久久手机免费观看| 国产精品网站一区| 亚洲美女av在线播放| 久久久水蜜桃av免费网站| 亚洲免费福利视频| 久久在线免费视频| 国产亚洲一区二区三区| 亚洲小视频在线| 亚洲电影免费观看高清| 欧美一区二区三区日韩视频| 欧美日韩一区二区三区| 亚洲国产精品一区二区三区| 欧美中文字幕久久| 一本色道久久88精品综合| 欧美成人xxx| 在线观看视频欧美| 久久精品二区亚洲w码| 一本久久综合亚洲鲁鲁| 欧美成人一区二区三区片免费| 国产一二精品视频| 性欧美1819性猛交| 亚洲视频专区在线| 欧美日韩视频在线| 一区二区三区精品在线| 亚洲国产精品999| 噜噜噜躁狠狠躁狠狠精品视频| 国产亚洲毛片| 久久精品官网| 欧美一级片在线播放| 国产精品三级视频| 亚洲欧美日韩在线不卡| 一区二区欧美亚洲| 欧美日韩亚洲综合| 一区二区欧美在线观看| 亚洲精品国产精品乱码不99按摩| 欧美大片第1页| 日韩视频永久免费观看| 最新成人av网站| 欧美日韩爆操| 亚洲婷婷国产精品电影人久久 | 亚洲欧美国产高清| 国产精品嫩草久久久久| 亚洲自拍偷拍麻豆| 欧美va亚洲va日韩∨a综合色| 精品动漫3d一区二区三区免费版| 久久精品一本久久99精品| 欧美激情视频在线播放| 亚洲欧洲一二三| 亚洲韩国青草视频| 欧美三日本三级少妇三2023| 亚洲午夜久久久久久久久电影院 | 欧美激情精品久久久六区热门| 亚洲国内欧美| 91久久精品国产91性色tv| 久久午夜精品| 亚洲精品一级| 欧美在线视频网站| 欧美日本网站| 一区国产精品| 亚洲一二三区在线| 老司机亚洲精品| 一区二区三区四区在线| 久热爱精品视频线路一| 国产精品盗摄一区二区三区| 影音先锋久久资源网| 亚洲视频 欧洲视频| 久久亚洲精品视频| 在线一区二区三区四区五区| 久久人人看视频| 国产欧美日韩91| 一区二区三区成人| 欧美大片一区| 性8sex亚洲区入口| 国产精品国产三级国产a| 亚洲高清在线观看一区| 久久精品一区蜜桃臀影院| 999亚洲国产精| 欧美高清在线一区二区| 樱桃国产成人精品视频| 欧美一区不卡| 亚洲一区二区三区在线看|