Antonov
Feb 9 2015, 13:35
Здравствуйте.
У меня возникла такая проблема:
Используя встроенный стек модема SIM900, я подключаюсь к удаленному серверу (SIM900 клиент). У меня модем должен быть постоянно на связи с сервером. Общение с сервером происходит успешно, успешно открываются и закрываются соединения.
НО, если на удаленном сервере неожиданно оборвется связь, то он (удаленный сервер), не успевает сообщить об этом модему. И модем об этом узнает только при попытке отправить серверу сообщение - не придет SEND OK. После не прихода SEND OK, модем продолжает отвечать на команды (например для теста я шлю AT).
Но как, только я попытаюсь закрыть это соединение (допустим AT+CIPCLOSE=0), то модем намертво виснет. В принципе, это соединение можно закрыть командой AT+CIPSHUT, но тогда закрываются и все остальные соединения.
При работе модема (SIM900) как сервера и подключении к нему удаленных клиентов и последующего неожиданного обрыва связи с этими клиентами со стороны ПК (клиента), происходит тоже самое - соединение остается открытым, а при попытке закрыть его (AT+CIPCLOSE) модем виснет.
Может кто-то знает как с этим бороться? Заранее благодарен за любую помощь.
Для начала сообщите хоть версию фирмваре модуля....
Antonov
Feb 9 2015, 13:57
Цитата(CADiLO @ Feb 9 2015, 16:38)

Для начала сообщите хоть версию фирмваре модуля....
SIMCOM_Ltd
SIMCOM_SIM900
Revision:1137B02SIM900M64_ST_ENHANCE
Я не обновлял прошивку. Обязательно ли использовать последнюю пршивку?
Я бы обновился до 1137B05SIM900M64_ST_ENHANCE
Вопросики:
1) как часто это происходит, есть статистика?
2) нет ли какой-то корреляции по времени этих повисаний, сажем с такого часа по такой и тп?
3) оценивали плотности мобильных телефонов в окружении сот(ы) на которые выходит модем?
GPRS имеет низкий приоритет, при большой плотности телефонов в окружении соты такое иногда наблюдается.
4) Каков увровень связи, как далеко от соты модем у вас?
5) Что-то про сам модем ( чей, есть ли схема) сообщить можете? Интересует как сделана цепь питания модема.
При недостаточном питании, такое может наблюдатся, когда опсос с 1800 переводит модем на 900Мег, а тот не тянет первый пакет синхры из-за недостаточности питания.
6) Оператор, Город?
Вроде TCP может кипэлайвить соединение, а вот поддерживает ли это модем.
Detection of Half-Open (Dropped) ConnectionsЦитата
Manipulate the TCP/IP keepalive packet settings. This is a highly controversial solution that has complex arguments for both pros and cons. It is discussed in depth in Stevens’ book, chapter 23. Essentially, this instructs the TCP/IP stack to send keepalive packets periodically on the application’s behalf.
Advantages. Once the code to set the keepalive parameters is working, there is nothing else that the application needs to change. The other solutions all have timer events that the application must respond to; this one is “set and forget”.
Disadvantages. RFC 1122, section 4.2.3.6 indicates that acknowledgements for TCP keepalives without data may not be transmitted reliably by routers; this may cause valid connections to be dropped. Furthermore, TCP/IP stacks are not required to support keepalives at all (and many embedded stacks do not), so this solution may not translate to other platforms.
CADiLO
Feb 10 2015, 06:58
Поддерживает. Параметры keepalive в команде AT+CIPTKA.
Включаем, настраиваем, пользуемся....
Antonov
Feb 10 2015, 07:16
Точно, именно эта проблема - Half-Open Connection. Я пытался решить ее периодически посылая нули, для того чтобы определить, что соединение разорвано (если ответа на сообщение с нулем нет). Но, после того, как я обнаруживал, что это соединение разорвано - я пытался закрыть его по средствам команды AT+CIPCLOSE=N. И именно в этом случае на этой команде модем и вис.
По вашей подсказке посмотрел по keepalive time. SIM900, оказывается, поддерживает эту настройку. Команда AT+CIPTKA, позволяет его активировать и настроить. После чего модем сам определяет через этот timeout, что соединение разорвано (если оно разорвано - Half-Open Connection) и закрывает порт БЕЗ зависания, мне же остается только ловить, ответ от модема N,CLOSED.
Спасибо всем за советы.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.