Подключение по GPRS (или другим способом через интернет)

День добрый. Вопрос по подключению через GPRS.
Настраиваю опрос (параметры подключения) в соответствии с рекомендациями (http://blog.lers.ru/2012/01/gprs.html)
Через обычный GPRS модем.
Untitled-1.jpg
Настраиваю порт подключения.
Untitled-2.jpg
Временно, вместо модема, использую свою утилиту для проверки подключений и обмена данными по протоколу TCP/IP.
Грубо говоря имитатор GPRS модема.
Подключаюсь к серверу ЛЭРС УЧЕТ. Соединение сразу же отрывается.

Так и написано в ваших рекомендациях:
Если для подключившегося модема не будет найдено подключения с соответствующим ему идентификатором или IP-адресом и портом, он будет сразу же отключен.

IP адрес и порт - это понятно. Но что за идентификатор?
Ведь при подключении к серверу TCP/IP, модем не передает никакую информацию о себе - только устанавливает TCP соединение. Или это только к вашим контроллерам относится?

Но вот ситуация:
После некоторого времени, подключение все-таки устанавливается и держится. И можно производить опрос… Данные бегают, это видно. Отключаюсь, подключаюсь - все вроде бы нормально. Но потом опять: бабах - и снова при подключении тут же отрывает. И ни в какую снова не подключается. Точнее подключается - но сразу же соединение разрывается.

В чем дело? Как заставить ЛЭРС держать входящие подключения?

Идентификатор используется только для GPRS-контроллеров, обычный GPRS-модем опознается по IP-адресу службы опроса, к которой он подключился, и номеру TCP-порта.

Особенность работы сокетов заключается в том, что при обрыве подключения сокет не получает никаких сигналов о том, что подключение разорвано и остается открытым. ЛЭРС УЧЕТ периодически проверяет состояние сокета и закрывает подключение, если видит что оно разорвано.

Для обычных GPRS-модемов порт опроса поддерживает только 1 подключение. Если вы запускаете свою программу сразу после обрыва подключения, то служба опроса не принимает новое подключение, т.к. считает что порт уже занят (для GPRS-контроллеров количество подключений можно задавать с запасом, чтобы были свободные слоты).

Подробности о причине закрытия подключения вы можете найти в журнале работы Службы опроса: C:ProgramDataLERSLogsPollServicePollService.log (только не забудьте в параметрах порта опроса поставить флажок “Включить отладку”).

Если вы разработчик утилиты - используйте технику gracefull shutdown, путем вызова фунции DisconnectEx() или shutdown() перед вызовом closesocket().

Спасибо за исчерпывающий ответ. Теперь все стало понятно.