Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Cетевые протоколы и технологии

Cетевые протоколы и технологии TCP/IP стек

Ответ
 
Опции темы Опции просмотра
Старый 21.10.2016, 09:02   #1
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Orel
Возраст: 37
Сообщений: 4,125
Вес репутации: 4071/111
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию LwIP TCP-сервер и UDP-клиент на одном MCU+LAN8720A?

Всем привет!

Проект без операционной системы с LwIP-стеком (low-level "core" / "callback" or "raw" API) на одном микроконтроллере (основная программа + TCP-сервер (Modbus TCP)), работает.

Меня интересует, можно ли в этот проект добавить еще и UDP-клиент (SNTP-клиент) и не будет ли TCP-сервер конфликтовать с UDP-клиентом?
По отдельности TCP-сервер работает, UDP-клиент работает, а как все вместе совместить (в проект c TCP-сервером добавить UDP-клиент)? Я еще с такой задачей не сталкивался, поэтому сильно не ругайте.

Если что, то в качестве PHY используется LAN8720A, разъем RJ45 один, проект на STM32, но микроконтроллер пока не важен, меня интересует сама возможность совмещения серера и клиента.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 21.10.2016, 10:13   #2
bzx
Senior Member
 
Аватар для bzx
 
Регистрация: 25.02.2007
Адрес: St. Petersburg
Возраст: 43
Сообщений: 424
Вес репутации: 952/50
bzx is a splendid one to beholdbzx is a splendid one to beholdbzx is a splendid one to beholdbzx is a splendid one to beholdbzx is a splendid one to beholdbzx is a splendid one to beholdbzx is a splendid one to beholdbzx is a splendid one to behold
Отправить сообщение для bzx с помощью ICQ Отправить сообщение для bzx с помощью Skype™
По умолчанию Re: LwIP TCP-сервер и UDP-клиент на одном MCU+LAN8720A?

Цитата:
Сообщение от Pridnya Посмотреть сообщение
...проект на STM32, но микроконтроллер пока не важен, меня интересует сама возможность совмещения серера и клиента.
Да, без проблем.
По опыту, на f407 и f429 + LwIP + rtl8201 постоянно открыто несколько входящих исходящих соккетов udp и tcp, включая порт 80.
http://qbit.su/example/riskom/contrF429/
__________________
Для связи email: info собака qbit.su
bzx вне форума   Ответить с цитированием
Старый 21.10.2016, 10:36   #3
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Orel
Возраст: 37
Сообщений: 4,125
Вес репутации: 4071/111
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: LwIP TCP-сервер и UDP-клиент на одном MCU+LAN8720A?

Цитата:
Сообщение от bzx Посмотреть сообщение
Да, без проблем.
По опыту, на f407 и f429 + LwIP + rtl8201 постоянно открыто несколько входящих исходящих соккетов udp и tcp, включая порт 80.
http://qbit.su/example/riskom/contrF429/
LwIP предполагает три вида API.
Цитата:
lwIP provides three Application Program's Interfaces (APIs) for programs
to use for communication with the TCP/IP code:
1) low-level "core" / "callback" or "raw" API.
2) higher-level "sequential" API.
3) BSD-style socket API.
Каждый из видов API основан на предыдущем.
Я использую самый низкоуровневый вид API (low-level "core" / "callback" or "raw" API), вы используете сокеты.
Вы можете ответить, какой вид API вы используете из этих трех? Виды 2 и 3 предполагают наличие операционной системы (у меня её нет).
PS: Фотки посмотрел. Есть вопрос и замечание. Работает плата? Часы не убегают?
Миниатюры
01.PNG   02.jpg  
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 21.10.2016 в 10:47.
Pridnya вне форума   Ответить с цитированием
Старый 03.11.2016, 15:05   #4
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Orel
Возраст: 37
Сообщений: 4,125
Вес репутации: 4071/111
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: LwIP TCP-сервер и UDP-клиент на одном MCU+LAN8720A?

Оказалось все проще простого: достаточно добавить два файла:
udp_client.h
void udp_echoclient_connect(void); // с прототипом функции

udp_client.c
с двумя функциями (функции из примера udp_echo_client):
void udp_echoclient_connect(void){...}
void udp_receive_callback(...){...}

В настройках проекта указать IP-адрес и порт UDP-сервера на стороне компьютера (IP=192.168.1.10, #define UDP_SERVER_PORT 7).

В файле main.c (или в любом другом) периодически, например через 4 секунды, вызываем функцию void udp_echoclient_connect(void);

Собираем проект, прошиваем микроконтроллер.
На стороне компьютера запускаем:
1) для проверки работы UDP-клиента в командной строке программу echotool с параметрами: echotool.exe /p udp /s 7
2) для проверки работы ModbusTCP-сервера - любой ModbusTCP-клиент (соединяемся с IP 192.168.1.101, TCP-порт 502).
Оба работают и не мешают друг другу.

Остался вопрос: как теперь заменить UDP-клиент на SNTP-клиент (SNTP-клиент работает как UDP-клиент, но есть свои особенности).

PS: А сначала спросил на электрониксе, так так стали учить цитатами из мультиков и расказывать что нужно глубоко знать работу lwIp-стека, что модератор из незалежной на неделю забанил. Это я для Guaho.
Миниатюры
EchotoolAndUdpClient.PNG   ModbusTCPClient.PNG  
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 03.11.2016 в 15:14.
Pridnya вне форума   Ответить с цитированием
Старый 03.11.2016, 17:08   #5
Рак
Senior Member
 
Регистрация: 02.04.2008
Адрес: Кременчуг
Возраст: 31
Сообщений: 1,239
Вес репутации: 2022/65
Рак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond repute
По умолчанию Re: LwIP TCP-сервер и UDP-клиент на одном MCU+LAN8720A?

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Оказалось все проще простого: достаточно добавить два файла:
udp_client.h
void udp_echoclient_connect(void); // с прототипом функции

udp_client.c
с двумя функциями (функции из примера udp_echo_client):
void udp_echoclient_connect(void){...}
void udp_receive_callback(...){...}

В настройках проекта указать IP-адрес и порт UDP-сервера на стороне компьютера (IP=192.168.1.10, #define UDP_SERVER_PORT 7).

В файле main.c (или в любом другом) периодически, например через 4 секунды, вызываем функцию void udp_echoclient_connect(void);

Собираем проект, прошиваем микроконтроллер.
На стороне компьютера запускаем:
1) для проверки работы UDP-клиента в командной строке программу echotool с параметрами: echotool.exe /p udp /s 7
2) для проверки работы ModbusTCP-сервера - любой ModbusTCP-клиент (соединяемся с IP 192.168.1.101, TCP-порт 502).
Оба работают и не мешают друг другу.

Остался вопрос: как теперь заменить UDP-клиент на SNTP-клиент (SNTP-клиент работает как UDP-клиент, но есть свои особенности).

PS: А сначала спросил на электрониксе, так так стали учить цитатами из мультиков и расказывать что нужно глубоко знать работу lwIp-стека, что модератор из незалежной на неделю забанил. Это я для Guaho.
А разве SNTP не над UDP работает?
Рак вне форума   Ответить с цитированием
Старый 03.11.2016, 22:35   #6
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Orel
Возраст: 37
Сообщений: 4,125
Вес репутации: 4071/111
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: LwIP TCP-сервер и UDP-клиент на одном MCU+LAN8720A?

Цитата:
Сообщение от Рак Посмотреть сообщение
А разве SNTP не над UDP работает?
Андрей, протокол NTP использует протокол UDP, т.е. внутри UDP-пакета содержится NTP-пакет. Хочешь, называй это "работает поверх UDP".
А протокол SNTP - это более простая версия протокола NTP. Структура SNTP и NTP-пакетов одинаковая. На скриншоте фрагмент, это я реальные пакеты разбирал с помощью Wireshark и своего NTP-клиента (в текстовых комментариях справа могут быть неверные цифры - копипастил предыдущие запросы). В PDF-ках стандарты: rfc1305c NTP v3 1992.pdf и rfc1769 SNTP v3 1995.txt.pdf (есть более новый SNTP v4, но он для IP v6). Вот подумай, как много мы пропустили в 90-е и 00-е годы. Уже скоро 10 лет будем отмечать с рождения PTP v2, а у нас не все еще SNTP внедрили.
Миниатюры
rfc1305c NTP v3 1992.pdf   rfc1769 SNTP v3 1995.txt.pdf   NTP.PNG  
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чем/как отлаживать код написаный на Си в WinAVR Yokel Микроконтроллеры других производителей 49 30.09.2014 09:48
Присоветуйте тип и способ управления MOSFETом "верхнего" плеча dr_Sash Источники питания и силовая электроника 37 08.09.2012 18:50
подключение магнитолы Sergey1 Общетехнические вопросы 10 27.12.2007 22:39
Контроль интернет-трафика SSH Общетехнические вопросы 9 28.10.2007 08:39


Часовой пояс GMT +3, время: 19:48.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot