Вы должны убедиться, что установлено только 1 соединение.
Самое простое (и самое низкотехнологичное, но, вероятно, наиболее гибкое) - иметь скрипт, регулярно проверяющий каталог на наличие файлов и отправляющий сообщения из файла на модем. Затем веб-служба просто записывает файл для каждого полученного SMS. (это можно легко расширить, чтобы принимать электронные письма, веб-запросы и т. д., ...)
Немного более сложным является запуск потока для связи и передача сообщений в структуру данных типа FIFO, предоставляемую вашей любимой платформой программирования. BlockinQueue будет идеальным. Поток читает сообщения из очереди и отправляет их на модем GSM.
Если вы хотите получить подтверждение отправки SMS-сообщения (что, по моему опыту, ничего не значит и, конечно, не означает, что получатель действительно его получил), вам нужно найти способ вернуть отзыв вызывающей стороне. Это может быть просто установка логического флага в сообщении для отправки другого сообщения или выполнения обратного вызова. Но я бы не стал беспокоиться. У меня были ситуации, когда 30% сообщений исчезали, даже когда у нас было центральное подтверждение сообщения.