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

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

最近在工作中遇到一個比較怪異的現象,在某些省區與SP的短信交互存在問題,短信發送不出去。查了一下原因:SmsSendMessage參數設置的問題。

Windows Mobile 5.0SDKHelloSMS例子中,發送短信的代碼是這樣寫的

void SendSMS(BOOL bSendConfirmation, BOOL bUseDefaultSMSC, LPCTSTR lpszSMSC, LPCTSTR lpszRecipient, LPCTSTR lpszMessage)
{
    SMS_HANDLE smshHandle;
    SMS_ADDRESS smsaSource;
    SMS_ADDRESS smsaDestination;
    TEXT_PROVIDER_SPECIFIC_DATA tpsd;
    SMS_MESSAGE_ID smsmidMessageID;

    
// try to open an SMS Handle
    if(FAILED(SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, &smshHandle, NULL)))
    
{
        MessageBox(NULL,
                    (LPCTSTR)LoadString(ghInstance, IDS_ERROR_SMSOPEN, 
00), 
                    (LPCTSTR)LoadString(ghInstance, IDS_CAPTION_ERROR, 
00),
                    MB_OK 
| MB_ICONERROR);
        
return;
    }


    
// Create the source address
    if(!bUseDefaultSMSC)
    
{
        smsaSource.smsatAddressType 
= SMSAT_INTERNATIONAL;
        _tcsncpy(smsaSource.ptsAddress, lpszSMSC, SMS_MAX_ADDRESS_LENGTH);
    }


    
// Create the destination address
    smsaDestination.smsatAddressType = SMSAT_INTERNATIONAL;
    _tcsncpy(smsaDestination.ptsAddress, lpszRecipient, SMS_MAX_ADDRESS_LENGTH);

    
// Set up provider specific data
    memset(&tpsd, 0sizeof(tpsd));
    tpsd.dwMessageOptions 
= bSendConfirmation ? PS_MESSAGE_OPTION_STATUSREPORT : PS_MESSAGE_OPTION_NONE;
    tpsd.psMessageClass 
= PS_MESSAGE_CLASS1;
    tpsd.psReplaceOption 
= PSRO_NONE;
    tpsd.dwHeaderDataSize 
= 0;

    
// Send the message, indicating success or failure
    if(SUCCEEDED(SmsSendMessage(smshHandle, ((bUseDefaultSMSC) ? NULL : &smsaSource), 
                                 
&smsaDestination, NULL, (PBYTE) lpszMessage, 
                                 _tcslen(lpszMessage) 
* sizeof(TCHAR), (PBYTE) &tpsd, 
                                 
sizeof(TEXT_PROVIDER_SPECIFIC_DATA), SMSDE_OPTIMAL, 
                                 SMS_OPTION_DELIVERY_NONE, 
&smsmidMessageID)))
    
{
        MessageBox(NULL,
                    (LPCTSTR)LoadString(ghInstance, IDS_SMSSENT, 
00), 
                    (LPCTSTR)LoadString(ghInstance, IDS_CAPTION_SUCCESS, 
00),
                    MB_OK);
    }

    
else
    
{
        MessageBox(NULL,
                    (LPCTSTR)LoadString(ghInstance, IDS_ERROR_SMSSEND, 
00), 
                    (LPCTSTR)LoadString(ghInstance, IDS_CAPTION_ERROR, 
00),
                    MB_OK 
| MB_ICONERROR);
    }


    
// clean up
    VERIFY(SUCCEEDED(SmsClose(smshHandle)));
}


這段代碼在一般情況下是運行正確的,對于手機與手機的發送是不存在問題的,但是與SP的交互在某些省區就存在短信發送不出去的情況。

為了更好的理解這段代碼,我們先來熟悉一下SmsSendMessage及各個參數。

SmsSendMessage

功能Use the SmsSendMessage function to create and send an Short Message Service (SMS) message.(創建和發送短信,但短信發送后并不保存到發件箱中)

原型

HRESULT SmsSendMessage (

const SMS_HANDLE smshHandle, // 調用SmsOpen時獲得的短信句柄

const SMS_ADDRESS * const psmsaSMSCAddress, //指向短信中心號碼的地址

const SMS_ADDRESS * const psmsaDestinationAddress, // 發送的目的地址

const SYSTEMTIME * const pstValidityPeriod, // 發送時間的有效期

const BYTE * const pbData, // 信息的內容部分

const DWORD dwDataSize,// 信息內容的長度

const BYTE * const pbProviderSpecificData, //運營商的附加數據

const DWORD dwProviderSpecificDataSize, // 附加數據的長度

const SMS_DATA_ENCODING smsdeDataEncoding, // 短信編碼

const DWORD dwOptions, // 其他選項

SMS_MESSAGE_ID * psmsmidMessageID); // 用于得到系統回執的信息

(具體介紹可查看http://msdn.microsoft.com/en-us/library/aa455068.aspx

在實際應用中短信發送不出去,但是SmsSendMessage的返回值是S_OK值。在一些文章中有人這樣認為是短信編碼的問題造成的。

如果編碼格式不對可能造成短信中心網關把短信給吞掉的情況,程序雖然調用成功,但是就是目標號碼收不到短信。函數參數中的后三個參數可以不用或設默認值都可以。

起初我也是認為這個地方造成的,很是興奮。短信的回復內容恰為字母,我誤以為短信內容此時是7-BIT的短消息,短信網關把短信給吞掉了,造成目標號碼收不到短信。在練習中卻也陰差陽錯的成功了。很高興的把理由歸到了這個地方。并這樣總結:SmsSendMessage可以支持7-bitASCII碼的短消息,也支持16-bitunicode的短消息。但內容為ASCII的時候,短信編碼為 SMSDE_GSMSMSDE_OPTIMAL,當內容不全是ASCII的時候,短信編碼為SMSDE_GSMSMSDE_OPTIMAL。所以回復內容改為漢字即可。

但是這樣對么?起初我認為我的解釋很合理.但是我卻發現我的一個參數與原來的程序不一樣.

是我在嘗試中無意修改了一個參數,

tpsd.psMessageClass = PS_MESSAGE_CLASS1;

修改為了

tpsd.psMessageClass = PS_MESSAGE_CLASSUNSPECIFIED;

這是發送短信中的運營商的指定數據TEXT_PROVIDER_SPECIFIC_DATA,它的參數psMessageClass是指

Text Short Message Service (SMS) messages with the appropriate flag can replace previously received notifications with a similar flag and originating address.

它有以下五個值:

PS_MESSAGE_CLASS0: The message should be displayed immediately but not stored. The MS shall send an acknowledgement to the service center when the message has successfully reached the MS. (被接受后立即顯示但不存儲(稱為閃信)。需要向SMSC發送確認信息。)

PS_MESSAGE_CLASS1The message should be stored and an acknowledgement should be sent to the Service Center when it is stored.(接收后被存儲,一旦存儲,需要向SMSC發送確認信息。)

PS_MESSAGE_CLASS2The message should be transferred to the SMS data field in the subscriber identity module (SIM) before an acknowledgement is sent to the Service Center.

PS_MESSAGE_CLASS3When the message has successfully reached the destination and can be stored, an acknowledgement is sent to the Service Center.

PS_MESSAGE_CLASSUNSPECIFIEDThe message Class is not set in the outgoing or incoming message. (對發出或收到的短信不進行設置)

 

分析以上五個值,前四個值有一個共同的特點,都需要向SMSC發送確認。而最后一個值沒有設定。

這個值的改動,解決了我所遇到的問題。但究其原因,我有些想不通為什么?
    但是在實際應用中,出現了
tmail.exe的異常。不知道是這個值的變動帶來的問題,還是實際模塊中存在的問題。還需要繼續研究一下。

如果大家有知道的,給些建議哈.

posted on 2009-03-10 14:14 Sandy 閱讀(6851) 評論(13)  編輯 收藏 引用 所屬分類: windows學習

FeedBack:
# re: Windows Mobile 發送短信的問題
2009-03-10 15:26 | Herb
建議看一下短信協議smpp  回復  更多評論
  
# re: Windows Mobile 發送短信的問題
2009-03-16 17:08 | science
建議不要直接用api,用mapi(就是操作win mobile短信的一套接口)建一條短信放在發件箱里,然后submitmessage,讓手機自己去發送。  回復  更多評論
  
# re: Windows Mobile 發送短信的問題
2009-04-14 22:21 | 飛飄飄
你好,請問你用過wm6的SDK嗎?在這種情況下,運行這個程序就會有異常,實在不知道為什么,期待你的解答!謝謝  回復  更多評論
  
# re: Windows Mobile 發送短信的問題
2009-04-15 10:09 | Sandy
@飛飄飄
你好,我今天還專門試了一下wm6中HelloSMS的那個例子,沒有異常啊!
WM5和WM6中兩個例子的代碼基本上是相同的。

在這種情況下,是不是指將PS_MESSAGE_CLASS1替換成PS_MESSAGE_CLASSUNSPECIFIED。

我分別在模擬器和真機上試驗過,似乎也沒有什么異常,所以還請賜教。

  回復  更多評論
  
# re: Windows Mobile 發送短信的問題
2009-04-18 21:45 | 飛飄飄
你好!今天我剛找到原因,我之前是在classic模擬器進行模擬,而這個程序不能用classic模擬器,而要在professional模擬器上調試,因為在classic模擬器沒有radio模塊,只有接收功能不能進行發送,所以出現了異常.我是剛入門,想請教一下應該如何把這個程序下載到真機上進行試驗呢?謝謝 !  回復  更多評論
  
# re: Windows Mobile 發送短信的問題
2009-04-20 09:37 | Sandy

@飛飄飄
在真機上運行需要安裝同步軟件,如果你是xp系統的話,安裝Active Sync同步軟件, 在調試的時候,選擇相應平臺的device; 如果是vista系統的話,安裝Microsoft Windows Mobile 設備中心6.1,即drvupdate-x86.exe.

如果只是簡單的試驗一下這個程序的話,安裝同步軟件后,只需把那個exe文件拷貝到手機上,點擊該文件即可.  回復  更多評論
  
# re: Windows Mobile 發送短信的問題
2009-04-20 21:01 | 飛飄飄
恩,謝謝指點!
  回復  更多評論
  
# re: Windows Mobile 發送短信的問題
2009-05-05 11:17 | qingyuzhui
@Sandy
可是我用WM6.0運行 SmsSendMessage 返回值不對啊?什么原因啊
  回復  更多評論
  
# re: Windows Mobile 發送短信的問題
2009-05-05 12:44 | Sandy
@qingyuzhui

這個我建議你看一下SDK。里面有一些對返回值的說明。

這里我對SmsSendMessage說明一下它的返回值,

如果SmsSendMessage執行成功的話,它會返回S_OK ,表示該方法成功執行。
如果返回的值為E_INVALIDARG, E_OUTOFMEMORY, E_UNEXPECTED, and E_FAIL,或者為其他,可以查看一下SMS Specific Errors 和 SMS General Errors。

如果你覺得不是很明白的話,可以給我發郵件:qiyanhd@163.com

  回復  更多評論
  
# re: Windows Mobile 發送短信的問題
2009-06-05 15:33 | beautymind
你好我現在做短信管理軟件 要將已發送短信里邊的特殊短信移到我自己建的一個MenuItem下邊 需要做哪些判斷 用哪個接口可以實現!
我做的Mobile 5  回復  更多評論
  
# re: Windows Mobile 發送短信的問題
2009-06-08 11:15 | Sandy
@beautymind
hi, 你說的是不是將發送的特殊短信移到自己建的目錄下,這個我還真的沒有嘗試過.
不過理論上是不是可以這樣去想,按照短信存儲的相關信息,將其存儲到數據庫中,這樣,我們自己就可以查看相應的短信信息,而不在系統的收件箱里面出現.
如果還原回去的話,就把記錄的相關信息插入到系統的文件夾里.

這是我自己的理解.  回復  更多評論
  
# re: Windows Mobile 發送短信的問題
2011-05-17 16:15 | futetan
兄臺,太感謝你了,引你的觀點做了下修改,接收到的信息格式正確了。  回復  更多評論
  
# re: Windows Mobile 發送短信的問題
2011-12-19 16:01 | 受益者
很多時候[PS_MESSAGE_CLASS1替換成PS_MESSAGE_CLASSUNSPECIFIED]好像關系不大,主要是
smsaDestination.smsatAddressType = SMSAT_INTERNATIONAL;
時手機號前加[86]國家代碼,或設為SMSAT_NATIONAL。
  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            在线亚洲一区| 亚洲人妖在线| 国产精品高潮呻吟视频| 久久最新视频| 欧美一区激情| 一区二区三区日韩欧美| 亚洲电影免费观看高清| 久久久亚洲成人| 午夜精品久久久久久久男人的天堂 | 99re成人精品视频| 在线看不卡av| 国际精品欧美精品| 国产精品免费一区二区三区在线观看| 欧美成人日韩| 美女黄毛**国产精品啪啪| 欧美自拍偷拍| 欧美在线观看视频在线| 亚洲在线免费观看| 亚洲午夜激情免费视频| 夜夜嗨av一区二区三区四区| 亚洲精品国产欧美| 亚洲国产欧美日韩精品| 亚洲第一在线| 亚洲黄色成人| 亚洲国产电影| 亚洲国产欧美一区二区三区同亚洲| 久久久久看片| 久久综合综合久久综合| 久久影视三级福利片| 久久在线免费观看视频| 麻豆国产精品va在线观看不卡| 久久久久国产精品麻豆ai换脸| 欧美在线二区| 久久午夜电影网| 蜜臀av国产精品久久久久| 美国成人毛片| 欧美激情视频免费观看| 欧美激情麻豆| 亚洲精品色婷婷福利天堂| 日韩视频一区二区在线观看| 9i看片成人免费高清| 亚洲性夜色噜噜噜7777| 午夜国产精品影院在线观看| 久久爱www.| 噜噜噜久久亚洲精品国产品小说| 免费观看不卡av| 欧美日本中文字幕| 欧美性猛交xxxx免费看久久久| 国产精品久久久久久超碰| 国产啪精品视频| 在线观看成人av电影| 日韩亚洲成人av在线| 亚洲一区二区免费| 久久精品国产亚洲a| 女女同性精品视频| 亚洲精品在线一区二区| 亚洲一区网站| 久久综合久久综合久久| 欧美女同在线视频| 国产伦精品一区二区三区高清版 | 亚洲欧美日韩一区二区在线 | 欧美一区二区三区日韩| 久久躁狠狠躁夜夜爽| 欧美日韩精品福利| 国产日韩欧美不卡在线| 亚洲国产婷婷综合在线精品 | 欧美一区二区精品| 嫩草伊人久久精品少妇av杨幂| 欧美日韩网址| 极品少妇一区二区三区精品视频| 亚洲精品日韩综合观看成人91| 亚洲欧美美女| 亚洲第一精品福利| 亚洲综合清纯丝袜自拍| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品videossex久久发布| 国内外成人免费激情在线视频网站| 亚洲日韩视频| 久久久久五月天| 亚洲美女电影在线| 久久久7777| 国产精品毛片| 亚洲精品视频一区| 久久精品免费观看| 99国产麻豆精品| 狂野欧美激情性xxxx欧美| 国产精品社区| 日韩亚洲在线观看| 蜜臀va亚洲va欧美va天堂| 中国女人久久久| 欧美高清在线精品一区| 好吊妞这里只有精品| 亚洲在线观看免费视频| 亚洲高清在线精品| 久久久久国产精品厨房| 国产精品视频yy9099| 夜夜嗨网站十八久久| 牛人盗摄一区二区三区视频| 香蕉久久精品日日躁夜夜躁| 欧美日精品一区视频| 亚洲国产日韩综合一区| 久久躁狠狠躁夜夜爽| 亚洲欧美国产另类| 欧美午夜精品理论片a级按摩| 亚洲福利视频网站| 久久久久久高潮国产精品视| 一区二区三区视频观看| 欧美伦理在线观看| 最新国产精品拍自在线播放| 久久久久久亚洲精品杨幂换脸| 亚洲视频999| 欧美三级中文字幕在线观看| 日韩视频专区| 欧美激情 亚洲a∨综合| 久热国产精品| 亚洲高清在线视频| 免费人成精品欧美精品| 久久九九电影| 怡红院精品视频| 久久在线免费观看| 久久精品中文字幕一区| 影视先锋久久| 鲁大师成人一区二区三区 | 国产精品久久久久国产a级| 99精品热视频只有精品10| 亚洲狠狠丁香婷婷综合久久久| 欧美a级片一区| 亚洲国产另类久久久精品极度| 免费短视频成人日韩| 久久在线免费观看| 91久久精品国产91性色tv| 亚洲高清在线观看| 欧美精品在线视频| 亚洲调教视频在线观看| 亚洲视频在线观看| 国产精品亚洲网站| 久久精品国产一区二区三| 久久国产精品亚洲77777| 国内精品伊人久久久久av影院| 久久免费视频观看| 老鸭窝亚洲一区二区三区| 亚洲精品免费在线播放| 亚洲毛片在线看| 国产精品久久久久久五月尺| 欧美综合77777色婷婷| 久久精品亚洲一区二区三区浴池| 影音先锋中文字幕一区| 亚洲国产成人午夜在线一区| 欧美日韩国产小视频在线观看| 亚洲一区自拍| 欧美中文字幕精品| 亚洲人成绝费网站色www| 99re热这里只有精品视频| 国产精品色网| 欧美第一黄色网| 欧美日韩三级电影在线| 欧美一区二区成人| 久久深夜福利| 一区二区三区视频观看| 亚洲欧美日韩精品久久奇米色影视| 国内精品视频在线观看| 亚洲人成网站在线播| 国产精品一区二区在线观看| 鲁大师影院一区二区三区| 欧美伦理影院| 久久久久久国产精品mv| 欧美极品色图| 久久久精品999| 欧美精品一区二区高清在线观看| 午夜精品一区二区三区在线播放| 久久久人人人| 亚洲资源av| 美女亚洲精品| 欧美在线免费看| 欧美精品在欧美一区二区少妇| 久久成人18免费网站| 欧美激情网友自拍| 久久免费精品视频| 欧美午夜大胆人体| 欧美成人国产一区二区| 国产精品一区二区男女羞羞无遮挡| 欧美成人精品在线播放| 国产精品国色综合久久| 亚洲第一色在线| 国产一区香蕉久久| 亚洲视频免费| 日韩系列欧美系列| 久久九九久精品国产免费直播| 亚洲自啪免费| 欧美精品系列| 欧美大片在线看| 国产在线高清精品| 一区二区三区视频在线观看| 亚洲国产精品一区二区第四页av | 一本色道久久88综合日韩精品| 亚洲电影第三页| 久久国产精品一区二区| 午夜欧美不卡精品aaaaa| 欧美日韩hd| 亚洲片在线观看|