Я пытаюсь создать Windows-клиент для настольных ПК, и он хорошо подключается и отправляется, за исключением ошибки, когда добавляется дополнительный символ (¿) в конец содержимого сообщения, которое я получаю на своем телефоне.
Итак, я отправляю «тест», но мой телефон получает «тест». Вот содержимое объекта 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
Мне пришлось внести небольшие изменения, чтобы заставить его работать на окнах, но я не думаю, что что-то изменилось, что могло повлиять на это.
Кто-то еще выполнил тест, используя другую учетную запись на сервере smpp, и вместо этого в тест добавили символ @.
Есть идеи, что может быть причиной этого? Спасибо!
Нашел проблему в конце, это было связано с опцией в библиотеке smpp, которая по умолчанию имеет значение true, называемой nullTerminateOctetStrings
Он добавлял 00 в конец сообщения, похоже, этого требовали стандарты SMPP 3.4, но нашему smsc это не понравилось. Я полагаю, что в идеале я бы исправил smsc, но он предоставлен третьей стороной, поэтому я просто отключил нулевое завершение.
Кто-то с подобной проблемой и больше информации здесь: https://www.mail-archive.com/[email protected]/msg06765.html