Смысл использования фреймворка / библиотеки, такой как Logica lib, должен заключаться в том, чтобы изолировать вас от низкоуровневых деталей уровня API / TCP FIN, иначе использование фреймворка не принесет никакой пользы.Мы проходили этот путь, и если у вас нет талантливых программистов TCP, этот путь работы на уровне TCP не будет продуктивным.
Я видел SMPP lib с открытым исходным кодом lib Cloudhopper (созданный Twitter и позже открытыйИсточник) используется на очень больших платформах с годами.Он надежен и проверен во многих ведущих телекоммуникационных компаниях.У него есть примеры клиентов, которые вы можете использовать для настройки.Управление соединением: кэшируйте соединение при первом подключении SMPP (за сеанс).Выполняя PDU submitSM (отправьте SMS), проверьте тип Exception, это исключение для соединения, просто переподключите и заново подключите сеанс SMPP / Connection.Если у вас большие периоды бездействия (скажем, более 40 секунд), SMPP-серверы / SMSC на их конце могут разорвать соединение.Для повторного подключения у вас есть два варианта: a) Определить устаревшее соединение в следующий раз, когда вы выполняете PDU submitSM, переподключите, обновите кэш и затем отправьте PDU submitSm или b) Это предпочтительный вариант.Имейте отдельный поток, который периодически делает pDU enquireLink - скажем, каждые 45 секунд, это будет гарантировать, что соединение остается активным. Предполагается, что enquireLink и submitSM PDU используют один и тот же кешированный сеанс / соединение SMPP.Конечно, если enquireLink PDU обнаруживает разорванное соединение, он должен выполнить повторную привязку и обновить общий сеанс / соединение SMPP.Я видел, как этот подход хорошо работает в нескольких приложениях с годами.