我正在尝试制作一个Windows桌面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服务器上使用其他帐户运行了测试,他们的测试改为添加了@符号。

任何想法可能是什么原因造成的?谢谢!

最佳答案

最终发现了问题,这是由于smpp库中的一个选项默认为true,称为nullTerminateOctetStrings

它在消息末尾添加了00,听起来很像SMPP 3.4标准所要求的,但是我们的smsc不喜欢它。我想理想情况下,我会修复smsc,但这是由第三方提供的,因此我只是关闭了null终止。

遇到类似问题并在此处获得更多信息的人:https://www.mail-archive.com/[email protected]/msg06765.html

关于c++ - SMPP客户端在消息末尾添加一个¿,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31144162/

10-11 18:52