Antonov 0 9 февраля, 2015 Опубликовано 9 февраля, 2015 · Жалоба Здравствуйте. У меня возникла такая проблема: Используя встроенный стек модема SIM900, я подключаюсь к удаленному серверу (SIM900 клиент). У меня модем должен быть постоянно на связи с сервером. Общение с сервером происходит успешно, успешно открываются и закрываются соединения. НО, если на удаленном сервере неожиданно оборвется связь, то он (удаленный сервер), не успевает сообщить об этом модему. И модем об этом узнает только при попытке отправить серверу сообщение - не придет SEND OK. После не прихода SEND OK, модем продолжает отвечать на команды (например для теста я шлю AT). Но как, только я попытаюсь закрыть это соединение (допустим AT+CIPCLOSE=0), то модем намертво виснет. В принципе, это соединение можно закрыть командой AT+CIPSHUT, но тогда закрываются и все остальные соединения. При работе модема (SIM900) как сервера и подключении к нему удаленных клиентов и последующего неожиданного обрыва связи с этими клиентами со стороны ПК (клиента), происходит тоже самое - соединение остается открытым, а при попытке закрыть его (AT+CIPCLOSE) модем виснет. Может кто-то знает как с этим бороться? Заранее благодарен за любую помощь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CADiLO 11 9 февраля, 2015 Опубликовано 9 февраля, 2015 · Жалоба Для начала сообщите хоть версию фирмваре модуля.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Antonov 0 9 февраля, 2015 Опубликовано 9 февраля, 2015 · Жалоба Для начала сообщите хоть версию фирмваре модуля.... SIMCOM_Ltd SIMCOM_SIM900 Revision:1137B02SIM900M64_ST_ENHANCE Я не обновлял прошивку. Обязательно ли использовать последнюю пршивку? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CADiLO 11 9 февраля, 2015 Опубликовано 9 февраля, 2015 · Жалоба Я бы обновился до 1137B05SIM900M64_ST_ENHANCE Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aner 3 9 февраля, 2015 Опубликовано 9 февраля, 2015 · Жалоба Вопросики: 1) как часто это происходит, есть статистика? 2) нет ли какой-то корреляции по времени этих повисаний, сажем с такого часа по такой и тп? 3) оценивали плотности мобильных телефонов в окружении сот(ы) на которые выходит модем? GPRS имеет низкий приоритет, при большой плотности телефонов в окружении соты такое иногда наблюдается. 4) Каков увровень связи, как далеко от соты модем у вас? 5) Что-то про сам модем ( чей, есть ли схема) сообщить можете? Интересует как сделана цепь питания модема. При недостаточном питании, такое может наблюдатся, когда опсос с 1800 переводит модем на 900Мег, а тот не тянет первый пакет синхры из-за недостаточности питания. 6) Оператор, Город? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zebrox 0 9 февраля, 2015 Опубликовано 9 февраля, 2015 · Жалоба Вроде 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 11 10 февраля, 2015 Опубликовано 10 февраля, 2015 · Жалоба Поддерживает. Параметры keepalive в команде AT+CIPTKA. Включаем, настраиваем, пользуемся.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Antonov 0 10 февраля, 2015 Опубликовано 10 февраля, 2015 (изменено) · Жалоба Точно, именно эта проблема - Half-Open Connection. Я пытался решить ее периодически посылая нули, для того чтобы определить, что соединение разорвано (если ответа на сообщение с нулем нет). Но, после того, как я обнаруживал, что это соединение разорвано - я пытался закрыть его по средствам команды AT+CIPCLOSE=N. И именно в этом случае на этой команде модем и вис. По вашей подсказке посмотрел по keepalive time. SIM900, оказывается, поддерживает эту настройку. Команда AT+CIPTKA, позволяет его активировать и настроить. После чего модем сам определяет через этот timeout, что соединение разорвано (если оно разорвано - Half-Open Connection) и закрывает порт БЕЗ зависания, мне же остается только ловить, ответ от модема N,CLOSED. Спасибо всем за советы. Изменено 10 февраля, 2015 пользователем Antonov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться