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

 
 
 
Reply to this topicStart new topic
> Неожиданное завершение сеанса связи по Ethernet (ARM <-> PC).
Oleg_IT
сообщение Dec 4 2013, 05:22
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Собственно сеанс связи так и не начинается. На ARM работает немного усечённый пример из пакета Keil LEDClient, на PC пробовал две программы, первая простейший эхо сервер на Qt, вторая тестовая программа servcons. Открытие канала проходит нормально, но потом программа на ARM (библиотека TCP_ARM_L) выдаёт команду FIN, канал закрывается и всё повторяется снова.
Сканы со снифира в приложении.
Почему разрывается соединение? Как исправить?


Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
bzx
сообщение Dec 4 2013, 06:03
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 482
Регистрация: 5-07-05
Из: Санкт-Петербург
Пользователь №: 6 528



Копайте Ваш TCP/IP стек. Ищите причину, почему TCP сокет закрывается. Тупо можете посмотреть обработчики по FIN, т.е. причина почему он генерится.
Возможно, наступает таймаут по сокету.


--------------------
Для связи email: info собака qbit.su
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Dec 4 2013, 11:47
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Посмотрел, но ни чего "криминального" не увидел. Вся логика скрыта в библиотеке, в открытом коде только обработка статусов закрыт, свободен и канал открыт. Таймаут стоит 4 секунды, но команда FIN выдается сразу.
Вообще после некоторых попыток открыть канал статус сокета становится ..._SYN_SENT и больше не меняется.
Go to the top of the page
 
+Quote Post
bzx
сообщение Dec 4 2013, 15:52
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 482
Регистрация: 5-07-05
Из: Санкт-Петербург
Пользователь №: 6 528



Цитата(Oleg_IT @ Dec 4 2013, 15:47) *
Посмотрел, но ни чего "криминального" не увидел. Вся логика скрыта в библиотеке, в открытом коде только обработка статусов закрыт, свободен и канал открыт. Таймаут стоит 4 секунды, но команда FIN выдается сразу.
Вообще после некоторых попыток открыть канал статус сокета становится ..._SYN_SENT и больше не меняется.

Внимательнее на Ваши логи гляньте:
Цитата
5. 1,200с –> ACK port2323
6. 10,999c -> FIN port2323


И что Вы после этого хотите?
Сокет открыт, почти 10с, обмена нет. Очень большая вероятность что Ваш девайс сам по таймауту закрывает соединение, посылая FIN.
Ищите в настройках по умолчанию (defaul) Вашего стека время удержания открытого tcp соединения (сокета).

Проверить данную версию можно так. В отрытый сокет шлите с любой стороны что-то с интервалом в несколько секунд, но более 10с.


--------------------
Для связи email: info собака qbit.su
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Dec 5 2013, 04:51
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Да, на время я не посмотрел, по факту все эти строки вываливаются почти одновременно, вот меня это и сбило. Пока не пойму где тормозить может, в открытом коде ни каких задержек нет.
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Dec 5 2013, 10:10
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Цитата(bzx @ Dec 4 2013, 19:52) *
Сокет открыт, почти 10с, обмена нет.

Не совсем так, приведённый пример исключение, типичное время между ACK и FIN ~1с.
Программа в ARM получает статус TCP_STATE_CONNECT, проходит проверка tcp_check_send(soket_tcp); и посылает буфер данных, которые до PC не доходят, а вместо них приходит FIN.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post

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

 


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


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