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

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

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

Ответ
 
Опции темы Опции просмотра
Старый 09.01.2017, 12:28   #26
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Возраст: 38
Сообщений: 4,444
Вес репутации: 4370/120
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 для STM32. Вопрос по освобождению памяти при приеме данных.

Цитата:
Сообщение от Petr Посмотреть сообщение
В main(); до! основного цикла:

Код:
NBNS_init(); //инит NBNS сервера
И радуешься
Чёт не поперло.
В файле NBNS.c есть ссылка на внешнюю переменную:
Код:
//в контексте потребуется только маска сети и NetBIOS Name
extern TKnt Knt; //контекст устройства
в которой есть глубокоиерархированные чережжопные поля (4 уровня вложенности):
Код:
 if((addr->addr & Knt.RemNETConf.Mask.addr) != (Knt.RemNETConf.IPAddr.addr & Knt.RemNETConf.Mask.addr))
И еще тип данных для IP-адреса используется какой-то свой, а не стандартный из lwIP, который объявлен в ip_addp.h.
и судя по включенным заголовочникам
Код:
#include "lwip/udp.h"
#include "TypeDefs.h"
код был выдран из Microchip TCP/IP (TypeDefs.h есть только в микрочиповском стеке) и затем адаптировался для lwIP.

PS: И синтаксис странноват:
Код:
if((addr->addr & Knt.RemNETConf.Mask.addr) != (Knt.RemNETConf.IPAddr.addr & Knt.RemNETConf.Mask.addr))
Как-то нелогично:
1) addr->addr, было бы что-нить dst->addr, src->addr
2) Knt.RemNETConf.IPAddr.addr какое еще поле есть внутри поля адрес, как будто в IP адресе есть еще какие-то поля кроме адреса.
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 09.01.2017 в 12:38.
Pridnya вне форума   Ответить с цитированием
Старый 13.01.2017, 18:15   #27
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 46
Сообщений: 1,734
Вес репутации: 3438/91
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Re: LwIP для STM32. Вопрос по освобождению памяти при приеме данных.

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Чёт не поперло.
В файле NBNS.c есть ссылка на внешнюю переменную:
Код:
//в контексте потребуется только маска сети и NetBIOS Name
extern TKnt Knt; //контекст устройства
Из той внешней переменной берется маска подсети
и имя устройства. Которое (имя) задается как бе в другом месте.
Это странно разве???

Цитата:
И еще тип данных для IP-адреса используется какой-то свой, а не стандартный из lwIP, который объявлен в ip_addp.h.
и судя по включенным заголовочникам
код был выдран из Microchip TCP/IP (TypeDefs.h есть только в микрочиповском стеке) и затем адаптировался для lwIP.
Я как бы лет 35 назад научился создавать файлы с любым содержимым.
При создании файла ему дают имя (открою секрет).
Данный файл имеет расширение .h что намекает на содержимое - объявления.
И действительно - там объявлены разные типы, структуры и переменные.
Имя тоже на это намекает. Потому мной оно и было выбрано для
создания собственного заголовочного файла.
На суть дела оно все не влияет - потому данный файл не приведен.

Цитата:
PS: И синтаксис странноват:
Код:
if((addr->addr & Knt.RemNETConf.Mask.addr) != (Knt.RemNETConf.IPAddr.addr & Knt.RemNETConf.Mask.addr))
Как-то нелогично:
1) addr->addr, было бы что-нить dst->addr, src->addr
2) Knt.RemNETConf.IPAddr.addr какое еще поле есть внутри поля адрес, как будто в IP адресе есть еще какие-то поля кроме адреса.
Логично/нелогично - это философский вопрос...
Один человек умеет думать - для него логично.
Другой думать не умеет (ему некогда это делать) - ему нелогично

А что касается приведенного кода, то там написано (в переводе на русский с языка С): "если IP адрес, пославшего широковещательный запрос узла находится не в подсети текущего устройства, определяемого действующей маской подсети, то..."
На языке С там больше ничего не написано.
Но в комментариях над этой строчкой на языке English написано (в переводе на русский): "отвечаем на запросы имени только узлам, находящимся в той же подсети, что и устройство."
И далее по коду следует выход из обработки без отправки ответа.

Что не так?

Цитата:
2) Knt.RemNETConf.IPAddr.addr какое еще поле есть внутри поля адрес, как будто в IP адресе есть еще какие-то поля кроме адреса.
Вопрос не ко мне! Я все же использовал структуру IP адреса,
определенную в LwIP (о ужас).
И таки да - там есть поля внутри IP адреса.
Вот же тот швед тупой придурок, правда?

Последний раз редактировалось Petr; 13.01.2017 в 18:25.
Petr вне форума   Ответить с цитированием
Старый 13.01.2017, 21:06   #28
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Возраст: 38
Сообщений: 4,444
Вес репутации: 4370/120
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 для STM32. Вопрос по освобождению памяти при приеме данных.

Петя, во-первых я сначала ответил на твою реплику, где ты предложил простой метод использования:
Цитата:
Сообщение от Petr Посмотреть сообщение
В main(); до! основного цикла:
Код:
NBNS_init();  //инит NBNS сервера
И радуешься
Оказалось, что ты плохо (хуже меня) понимаешь как писать код. Если бы понимал, то не предлагал бы пользоваться кодом, имеющим зависимость от неизвестных структур, объявленных в другом файле. Такой код можно детишкам на факультативе показывать - все равно ничего не поймут, это я к тому, что ты уже не раз засветился "в науке" и как бы"на учете". Все тщательно проверяется.

Во-вторых, вот эта реплика не верна, т.к. в твоем коде неоднократно используются поля внешней структуры.
Цитата:
Сообщение от Petr Посмотреть сообщение
Из той внешней переменной берется маска подсети
и имя устройства. Которое (имя) задается как бе в другом месте.
Это странно разве???
Цитата:
Сообщение от Petr Посмотреть сообщение
Я как бы лет 35 назад научился создавать файлы с любым содержимым.
Скорее можно поверит в оторванность мышления от реальности, чем в то, что ученик первого класса в 10 лет, да еще в далеком 1982 году мог создавать файлы с любым содержимым. Ведь спустя 35 лет ты выложил два файла NBNS.c и NBNS.h в последнем файле вообще одна функция, которую ты и предложил вызывать.
Код:
#ifndef __NBNS_H
#define __NBNS_H
void NBNS_init(void); //инит NBNS сервера
#endif
Вообще, если ты хотел открыть код сообществу, то должен был избавить его от зависимостей от своих самопальных внешних структур (это я про твою struct Knt). Код должен был включать только стандартные заголовочные файлы из стандартных библиотек - эти файлы выкладывать не нужно.
Цитата:
Сообщение от Petr Посмотреть сообщение
Вопрос не ко мне! Я все же использовал структру IP адреса,
определенную в LwIP (о ужас).
И таки да - там есть поля внутри IP адреса.
Вот же тот швед тупой придурок, правда?
Не, не правда. Швед умный, у него несколько хороших проектов (uIP, LwIP...), но он хитро закрутил свой код. В этом есть смысл.
Однако, Петя, в LwIP IP-адрес задается в файле ip_addr.h структурой:
Код:
struct ip_addr{
  u32_t addr);
};
Ты же ввел еще один тип данных для IP-адреса и назвал его ip_addr_t, это не нужно было делать, т.к. вносит избыточность и запутывает. Если тип определен нужно использовать этот тип и не вводить новый тип для определения имеющегося. А то есть люди, которые даже стандартные библиотеки не знают и пишут свои функции. А есть ахтары, которые вообще пишут целые книги по языку Си, при этом для вывода на консоль используют не printf(), а cout<<"zlp = " << endl; т.е. используют С++, не понимают на каком языке пишут. Это у меня сейчас супруга учится по такой книге (Виталий Потопахин "Язык Си Освой на примерах" 2006). Я уже замучался объяснять (проверяю знания), что книга низкого качества. У него там даже оператор присваивания из языка Pascal есть. Понимаешь, какой учитель - сразу на трех языках код в книге по Си, с одной стороны, а с другой - каша в голове. Это беда. Но такие книги тоже нужно прочитать, чтобы знать "как не нужно писать".
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 13.01.2017 в 21:23.
Pridnya вне форума   Ответить с цитированием
Старый 14.01.2017, 11:59   #29
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 46
Сообщений: 1,734
Вес репутации: 3438/91
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Re: LwIP для STM32. Вопрос по освобождению памяти при приеме данных.

Цитата:
Вообще, если ты хотел открыть код сообществу, то должен был избавить его от зависимостей от своих самопальных внешних структур (это я про твою struct Knt). Код должен был включать только стандартные заголовочные файлы из стандартных библиотек - эти файлы выкладывать не нужно.
Я ни у кого ничего не занимал! И, следовательно, никому ничего не должен!
Каждый использует мой код так, как захочет.
Не захочет - не использует.
Я подчеркивал эту интернет аксиому много раз!

Цитата:
Не, не правда. Швед умный, у него несколько хороших проектов (uIP, LwIP...), но он хитро закрутил свой код. В этом есть смысл.

Ты же ввел еще один тип данных для IP-адреса и назвал его ip_addr_t, это не нужно было делать, т.к. вносит избыточность и запутывает. Если тип определен нужно использовать этот тип и не вводить новый тип для определения имеющегося. А то есть люди, которые даже стандартные библиотеки не знают и пишут свои функции.....
Переадресуй Шведу свое гневное послание.
И, наконец, посмотри код LwIP и определения в нем.
По ходу ты там ничего не понял.
Petr вне форума   Ответить с цитированием
Старый 14.01.2017, 14:04   #30
siarzhuk
Senior Member
 
Аватар для siarzhuk
 
Регистрация: 08.11.2014
Возраст: 47
Сообщений: 113
Вес репутации: 1003/23
siarzhuk has much to be proud ofsiarzhuk has much to be proud ofsiarzhuk has much to be proud ofsiarzhuk has much to be proud ofsiarzhuk has much to be proud ofsiarzhuk has much to be proud ofsiarzhuk has much to be proud ofsiarzhuk has much to be proud of
По умолчанию Re: LwIP для STM32. Вопрос по освобождению памяти при приеме данных.

netbios.c из папочки contrib вроде как штатная поддержка резольвинга имён в windows-сетях с включённой поддержкой NetBIOS.
siarzhuk вне форума   Ответить с цитированием
Старый 14.01.2017, 21:08   #31
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Возраст: 38
Сообщений: 4,444
Вес репутации: 4370/120
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 для STM32. Вопрос по освобождению памяти при приеме данных.

Цитата:
Сообщение от siarzhuk Посмотреть сообщение
netbios.c из папочки contrib вроде как штатная поддержка резольвинга имён в windows-сетях с включённой поддержкой NetBIOS.
Тогда автор предложения может при желании раскрыть чем его реализация NetBIOS "не искал готового просто слепил по быстрому из микрочиповского NBNS" отличается от реализации из приложения к LwIP-стеку (файлики netbios.h и netbios.c из каталога contrib\). И еще интересно, почему в теме про LwIP предлагается что-то свое, а не из приложения к стеку.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 15.01.2017, 18:04   #32
siarzhuk
Senior Member
 
Аватар для siarzhuk
 
Регистрация: 08.11.2014
Возраст: 47
Сообщений: 113
Вес репутации: 1003/23
siarzhuk has much to be proud ofsiarzhuk has much to be proud ofsiarzhuk has much to be proud ofsiarzhuk has much to be proud ofsiarzhuk has much to be proud ofsiarzhuk has much to be proud ofsiarzhuk has much to be proud ofsiarzhuk has much to be proud of
По умолчанию Re: LwIP для STM32. Вопрос по освобождению памяти при приеме данных.

Цитата:
Сообщение от Pridnya Посмотреть сообщение
почему в теме про LwIP предлагается что-то свое, а не из приложения к стеку.
Ну с термином "штатный" это я пожалуй загнул - contrib в опенсорце это доработки от лиц, не участвующих в проекте. Да и с многовариантностью предложений решения проблем не вижу - идеальный код недостижим в принципе, всё знать невозможно, а у всякого писателя всегда есть что потянуть. Вероятно испорчен я опенсорцом безвозвратно.
siarzhuk вне форума   Ответить с цитированием
Старый 15.01.2017, 18:46   #33
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,299
Вес репутации: 4442/102
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: LwIP для STM32. Вопрос по освобождению памяти при приеме данных.

Цитата:
Сообщение от siarzhuk Посмотреть сообщение
Ну с термином "штатный" это я пожалуй загнул - contrib в опенсорце это доработки от лиц, не участвующих в проекте. Да и с многовариантностью предложений решения проблем не вижу - идеальный код недостижим в принципе, всё знать невозможно, а у всякого писателя всегда есть что потянуть. Вероятно испорчен я опенсорцом безвозвратно.
Вот теперь на место в голове встало. Сломал кнопки google и прочих ctrl +F (с/без shift),
ampersant вне форума   Ответить с цитированием
Старый 15.01.2017, 19:50   #34
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,299
Вес репутации: 4442/102
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: LwIP для STM32. Вопрос по освобождению памяти при приеме данных.

для чего при отправке ответа по UDP LwIP отправляет trailer? (кучка нулей) Обнаружил в различных протоколах
ampersant вне форума   Ответить с цитированием
Старый 16.01.2017, 09:50   #35
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 46
Сообщений: 1,734
Вес репутации: 3438/91
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Re: LwIP для STM32. Вопрос по освобождению памяти при приеме данных.

Цитата:
Сообщение от ampersant Посмотреть сообщение
для чего при отправке ответа по UDP LwIP отправляет trailer? (кучка нулей) Обнаружил в различных протоколах
https://books.google.ru/books?id=bIn...railer&f=false

Я так понял часто этот ESP добавляют или по требованию протокола или для совместимости. Но почти никогда не используют.
Petr вне форума   Ответить с цитированием
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Имитатор DS18B20 Filya44 Вопросы начинающих 14 12.03.2012 17:39
MPLAB не находит c018i.o qwerty1 Продукция MICROCHIP 45 22.04.2011 12:14
Помогите с интерфейсом I2C maxNTF Продукция MICROCHIP 34 23.03.2009 12:45
проблемка с PIC16F628A bereg_ok Продукция MICROCHIP 72 07.09.2007 11:00


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


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