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

春暖花開
雪化了,花開了,春天來了
posts - 149,comments - 125,trackbacks - 0

轉(zhuǎn)載: http://www.vckbase.com/document/viewdoc/?id=1803

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

作者:謝紅偉

  最近編寫一個醫(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)行連接測試。

總結(jié):
從網(wǎng)上看到GPRS的連接方法大都采用這種方法。但是這種方法在我實際的運(yùn)用中有時也連不上網(wǎng)絡(luò),這讓我很郁悶!
方法就是繼續(xù)尋找更可行的方案。

posted on 2009-06-12 16:53 Sandy 閱讀(684) 評論(0)  編輯 收藏 引用 所屬分類: Windows Mobile
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久www成人_看片免费不卡| 最新亚洲一区| 亚洲男人av电影| 一二三区精品| 国产精品久久久一区麻豆最新章节 | 亚洲视频一区在线观看| 亚洲精品在线视频观看| 欧美视频专区一二在线观看| 亚洲欧美日韩一区| 欧美一级成年大片在线观看| 好看不卡的中文字幕| 欧美成人午夜| 久久综合给合久久狠狠狠97色69| 久久精品人人做人人综合| 激情小说亚洲一区| 亚洲黄页一区| 国产精品久久久一本精品| 欧美在线看片a免费观看| 久久电影一区| 日韩一本二本av| 亚洲欧美综合v| 亚洲韩国一区二区三区| 一卡二卡3卡四卡高清精品视频| 国产精品夜夜嗨| 欧美高清一区二区| 国产精品久久777777毛茸茸| 久久亚洲精品一区| 欧美日韩福利视频| 久久久久九九九| 亚洲欧美日本视频在线观看| 在线激情影院一区| 中国成人亚色综合网站| 有坂深雪在线一区| 一区二区三区四区五区视频 | 国产精品xxxxx| 久久久久久亚洲综合影院红桃 | 国产精品久久久久7777婷婷| 久久免费视频在线| 欧美日韩亚洲视频| 欧美aⅴ一区二区三区视频| 欧美日韩视频专区在线播放| 久久三级视频| 国产精品伦子伦免费视频| 欧美国产日本| 国产综合在线视频| 亚洲一区欧美二区| 亚洲美女精品久久| 欧美在线一二三四区| 国内一区二区三区在线视频| 亚洲精品久久久久久久久久久久久| 国产日韩精品一区二区| 99精品免费| 99国内精品久久久久久久软件| 久久久综合香蕉尹人综合网| 欧美在线观看一区| 国产精品成人va在线观看| 91久久精品国产91久久性色tv| 国产一区二区无遮挡| 亚洲一区二区免费在线| 亚洲无玛一区| 欧美色播在线播放| 一本色道久久综合亚洲二区三区| 亚洲巨乳在线| 欧美金8天国| 亚洲人成网站色ww在线| 亚洲精品久久久久久久久| 一区二区三区回区在观看免费视频| 亚洲激情网站免费观看| 玖玖综合伊人| 欧美韩日高清| 亚洲免费观看| 欧美日韩国产123| 一区二区激情小说| 亚洲欧美日韩国产精品| 国产乱人伦精品一区二区| 亚洲图片自拍偷拍| 欧美在线视频日韩| 国内免费精品永久在线视频| 久久精品1区| 欧美激情按摩在线| 伊人激情综合| 欧美电影免费观看高清完整版 | 一本久久综合亚洲鲁鲁五月天 | 亚洲一区二区在线免费观看| 国产一区二区三区高清播放| 久久精品国产亚洲一区二区| 一区二区三区日韩在线观看| 亚洲国产欧美在线| 麻豆成人91精品二区三区| 亚洲欧美中文日韩在线| 亚洲伦理久久| 亚洲国产一区在线观看| 韩国v欧美v日本v亚洲v| 国产精品成人免费| 欧美日本国产精品| 美女精品网站| 久久一区免费| 久久久亚洲精品一区二区三区 | 欧美有码视频| 亚洲一区在线播放| 一本色道**综合亚洲精品蜜桃冫 | 久久人人97超碰精品888| 午夜精品久久久久久| 亚洲图片欧洲图片日韩av| 99re这里只有精品6| 亚洲精品免费在线播放| 亚洲国产欧美一区二区三区同亚洲 | 国产乱人伦精品一区二区| 欧美午夜不卡视频| 欧美午夜欧美| 欧美性事在线| 国产精品女主播| 国产麻豆综合| 国产亚洲一区二区三区| 国产亚洲欧美一区二区三区| 国产一区二区av| 一区二区视频免费在线观看| 黄页网站一区| 亚洲日本国产| 在线视频你懂得一区二区三区| 亚洲视频免费看| 午夜欧美精品| 欧美在线视频在线播放完整版免费观看 | 麻豆成人小视频| 欧美成人a视频| 亚洲韩国日本中文字幕| 99亚洲视频| 翔田千里一区二区| 久久成人精品无人区| 美女福利精品视频| 欧美喷潮久久久xxxxx| 欧美午夜不卡| 国产综合久久久久影院| 亚洲精品一二三区| 亚洲一级影院| 久久久久国内| 亚洲精品久久7777| 午夜视频在线观看一区| 免费欧美日韩国产三级电影| 欧美日韩国产在线播放网站| 国产日韩在线播放| 亚洲欧洲精品一区二区| 亚洲影视中文字幕| 久久夜色精品国产噜噜av| 亚洲黄色成人| 欧美一级午夜免费电影| 欧美成人性网| 国产欧美日韩综合精品二区| 亚洲精品免费电影| 久久国产一区二区| 亚洲精品国产精品乱码不99按摩| 亚洲女ⅴideoshd黑人| 免费观看不卡av| 国产精品免费网站在线观看| 亚洲国产老妈| 久久国产精品一区二区| 最新成人在线| 久久国产一区二区三区| 欧美午夜一区| 亚洲人成啪啪网站| 久久久久综合网| 在线视频欧美日韩| 农村妇女精品| 国产一区日韩一区| 亚洲影院免费观看| 亚洲第一天堂无码专区| 欧美在线免费一级片| 欧美性大战久久久久久久| 亚洲第一久久影院| 久久久99精品免费观看不卡| 日韩视频一区二区三区在线播放免费观看| 久久精品国产69国产精品亚洲 | 欧美一区二区三区另类| 久久综合久久88| 国产欧美精品在线观看| 日韩午夜在线视频| 老牛国产精品一区的观看方式| 一区二区三区.www| 巨乳诱惑日韩免费av| 国内自拍一区| 久久久久国产一区二区| 亚洲小说欧美另类社区| 欧美剧在线观看| 日韩视频第一页| 亚洲国产二区| 久久夜色精品国产欧美乱极品| 国产欧美亚洲精品| 欧美一级片一区| 亚洲午夜精品在线| 国产精品国产三级国产aⅴ入口| 一区二区激情小说| 日韩午夜在线| 欧美三级网页| 亚洲欧美日韩视频一区| 亚洲无限av看| 国产欧美一区二区三区久久人妖| 久久av资源网| 久热re这里精品视频在线6| 亚洲精品网站在线播放gif| 蜜臀a∨国产成人精品|