В спецификаторе SMPP указан номер sequence_number - это должно быть монотонно увеличиваться для каждого запрошенного вами запроса, а ответ, возвращаемый с сервера, будет иметь порядковый номер запроса, на который он отвечает.
Если вы подождете немного (возможно, 10 секунд, может быть, больше), и вы не получите ответ, вы можете повторно отправить запрос с тем же номером последовательности, и сервер должен определить его как дубликат, если он получить его в первый раз; если он не получил его в первый раз, тогда он будет рассматривать его как новый запрос.
Сервер также может отправлять запросы вашему клиенту; например вот квитанция о доставке или вот сообщение с мобильным источником - у него также будет свой собственный счетчик sequence_number, и вы должны признать его запросы с ответами, имеющими один и тот же порядковый номер. Вы должны отслеживать порядковые номера, которые вы видели, чтобы вы могли определить, попали ли вы в дубликат запроса.
Это свойство называется http://en.wikipedia.org/wiki/Idempotence, и вам следует ознакомиться с тем, реализуете ли вы протоколы телекоммуникаций.
Чтобы получить ваши 70 msgs/sec, вам, скорее всего, нужно будет построить поверх Idempotence с помощью скользящего окна http://en.wikipedia.org/wiki/Flow_control_(data)#Sliding_Window, чтобы вы могли иметь максимум N (возможно, 10) запросов, выдающихся, вы все еще ожидаете подтверждения ответа до - если вы не очень близки к серверу SMPP с очень низкой задержкой.
Выполнение прав SMPP не является тривиальным Я бы порекомендовал вам прочитать SMPP v3.4 spec спереди назад, прежде чем вы заходите слишком далеко в реализацию.
70! Вы рассылаете спам на сервере? –
нет :), это максимальное количество SMS, которое я могу отправить. мы используем эту услугу для отправки подписчикам, что их ежемесячный счет за телефон готов. –