реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> микроIP зависает, если получает пустой пакет, Разработчику на заметку
Kluwert
сообщение Feb 9 2012, 11:20
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 239
Регистрация: 15-11-09
Из: Санкт-Петербург
Пользователь №: 53 639



Вот, если кому интересно.

Была задача сделать "виртуальный" последовательный порт на плате с ARM. На PCке программка использовала, есс-но, сокет-клиент (по-русски говоря, "розетку"), а на ARMе - микроIP, который, по-сути, и есть реализация розетки только на микроконтроллере.

И что интересно, выяснилось, что если посылать пустой пакет (т.е. TCP/IP-пакет без флажка PSH), то та розетка, которой послан этот пакет "подвисает". Т.е. идет ответ пакетом с флажком ACK, но ни одно из событий не срабатывает, кроме Connected. Ни WriteData, не ReadData и т.п. на компе и не newdata, acked и т.д. в микроIP. Самое обидно, что не срабатывает и событие poll. Так что вывести обе розетки из этого состояния можно только принудительным закрытием соединения (Closed или abort) из остальной части программы.

Так что, к сожалению, при использовании микроIP хотя бы один байт всегда посылать нужно и максимальная пропускная способность TCP-соединения снижается до 1459 байт/пакет. Если этот байт критичен, то придется лезть ручками в потроха микроIP. На мой взгляд, овчинка явно выделки не стоит, но на вкус и цвет biggrin.gif

Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 18:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01345 секунд с 7
ELECTRONIX ©2004-2016