Перейти к содержанию
    

wip_write в open at TCP/IP

Кто сталкивался с работтой функции wip_write? Алгоритм простой до безобразия, соединяюсь с жпрс, потом подключаюсь к серверу через wip_TCPClientCreateOpts . В уарт славиваются данные и по таймеру отправляются на сервер, через жрпс. Данных не много 10-20 посылок в кадой по 100-200 байт. Wip_write как пишут, возвращает количество переданных байт, я это все анализирую и в случае успеха отпарвляю модем в сон. Так вот, данные теряются ...., открывается сокет, начинаеся передача, а концовка иногда просто пропадает. И когда она пропала, где она пропала определить не реально :(. Wip_write говорит что все отправил, tcp по идее должен же гарантировать доставку , но он тоже ничгео не делает. Никакие события о разрыве соединения или сокета не возвращаются, все короче отрабатывается как положено, только данных нет. Может как то можно помудрить с натройками wip_setOpts? WIP_COPT_NODELAY установил в true, размер буффера тоже проверил, все вроде должно работать как положено, только не хочет :(.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

TCP гарантирует доставку до шлюза. Дальше ниче он не гарантирует. Если нужна 100% доставка данных, то прикручивайте сверху протокол с квитированием от сервера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуй перед "уходом в сон" попробуй сделать паузу.

пауза есть, я ее сразу поставил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

все таки лучше прикрутить подтверждение приема пакета на серваке, если нет, то повтор пакета

Кстати, пропадает только последний пакет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пропасть может любой пакет, было такое, что он полностью не пришел на сервер, хотя в логах wip_write показывает что все отправилось.

 

Буферизация в приложении есть? Или пытаетесь все 200 байт в юарт принять разом?

Че то я не пойму при чем тут уарт...

На модеме данные скаладываются в буффер, в колбеке от уарта, буффер довольно большой. Потом по таймеру вызывается wip_write и начинает частями из этого буффера отпарвлять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Че то я не пойму при чем тут уарт...

На модеме данные скаладываются в буффер, в колбеке от уарта, буффер довольно большой. Потом по таймеру вызывается wip_write и начинает частями из этого буффера отпарвлять.

Вот причем:
В уарт славиваются данные и по таймеру отправляются на сервер
Данные в уарт славиваются все? Размер пакета который уарт может принять - 120 байт, может здесь теряете?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот причем:Данные в уарт славиваются все? Размер пакета который уарт может принять - 120 байт, может здесь теряете?

Да с уартом все в порядке, работает как часы, ничего там не теряется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да с уартом все в порядке, работает как часы, ничего там не теряется.

У меня нормально все уходит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня нормально все уходит.

А вы сколько за раз отправляете данных? какая пауза между отправкой? и какой оператор?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...