2015-06-30 121 views
1

我試圖製作一個Windows桌面smpp客戶端,並且它的連接和發送情況良好,除了一個額外字符(¿)添加到最後的錯誤我在手機上收到的信息內容。SMPP客戶端在郵件末尾添加了一個¿

所以我發送「測試」,但我的手機收到「測試」。下面是PDU對象的內容,它就會發出之前:

size  :58 
sequence :2 
cmd id :0x4 
cmd status:0x0 : No Error 
00000000 00 00 00 3a 00 00 00 04 00 00 00 00 00 00 00 02 |...:............| 
00000010 00 05 00 74 65 73 74 66 72 6f 6d 00 01 01 34 34 |...testfrom...44| 
00000020 37 37 37 37 37 37 37 37 37 37 00 00 00 00 00 00 |7777777777......| 
00000030 00 00 00 00 05 74 65 73 74 00     |.....test.| 
0000003a 

我使用這個C++ SMPP庫爲基礎:

https://github.com/onlinecity/cpp-smpp

我不得不做出一些細微的變化讓它在Windows上工作,但我不認爲任何可能影響到這一點的變化。

其他人使用smpp服務器上的其他帳戶運行測試,而他們的測試添加@符號代替。

任何想法可能導致這種情況?謝謝!

+0

如果你不得不改變這工作與Windows,它可能是與編碼的問題嗎?它可以解釋這個意想不到的特徵。金髮女郎圖書館? – Dportology

+0

我對編碼知之不多,但肯定不會,但是我會對發送的實際數據包進行調查,這是來自包檢查的消息內容的十六進制:74 65 73 74 00它表示消息長度= 5,即比必要的時間長一些,但最後的字符只是00,出於某種原因,這可能會被解釋爲一個奇怪的字符? – GemmaB89

+0

我不是專家,我想,哈哈。但我仍然看着編碼。您的手機可能會使用UTF-8編碼,而Windows有自己的編碼方案。在兩者之間遇到問題時,我遇到了缺少字符的問題。祝你好運! – Dportology

回答

0

實測值到底這個問題,它在SMPP庫默認爲true,稱爲nullTerminateOctetStrings

它被添加00到消息的結束,聲音S形這是需要由一個選擇是由於SMPP 3.4標準,但是我們的smsc並不喜歡它。我想理想情況下我會修復smsc,但是這是由第三方提供的,所以我剛剛關閉了null終止。

有人有類似的問題,更多的信息在這裏:https://www.mail-archive.com/[email protected]/msg06765.html