c++ - SMPP 客户端在消息末尾添加一个 ¿

标签 c++ smpp

我正在尝试制作一个 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,但这是由第 3 方提供的,所以我只是关闭了 null 终止。

有类似问题的人和更多信息在这里:https://www.mail-archive.com/devel@kannel.3glab.org/msg06765.html

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

相关文章:

c++ - "_dyld_start"在我的分析结果中意味着什么?

javascript - 如何使用cocos creator在Cocos2d-X/Cocos2d-JS中调用javascript函数并从c++传递值

SMPP 交付报告

Java Socket 服务器应用程序 : Getting the packet after long delay

node.js - SMPP 交付收据响应未传入 Node smpp

c++ - Qt - QStackedWidget 用法

c++ - 显示 vector 的所有元素

c++ - 并行化时的不同答案

sms - 从其他 SMPP 向我的系统发送短信并接收短信

smpp - 用于 SMPP 集成的命令状态 0x00000011 和 Submit_multi