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

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

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

Ответ
 
Опции темы Опции просмотра
Старый 09.01.2017, 12:28   #26
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Orel
Возраст: 38
Сообщений: 4,311
Вес репутации: 4216/116
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/89
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
Адрес: Orel
Возраст: 38
Сообщений: 4,311
Вес репутации: 4216/116
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/89
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
Member
 
Аватар для siarzhuk
 
Регистрация: 08.11.2014
Возраст: 46
Сообщений: 91
Вес репутации: 761/17
siarzhuk is a splendid one to beholdsiarzhuk is a splendid one to beholdsiarzhuk is a splendid one to beholdsiarzhuk is a splendid one to beholdsiarzhuk is a splendid one to beholdsiarzhuk is a splendid one to beholdsiarzhuk is a splendid one to behold
По умолчанию Re: LwIP для STM32. Вопрос по освобождению памяти при приеме данных.

netbios.c из папочки contrib вроде как штатная поддержка резольвинга имён в windows-сетях с включённой поддержкой NetBIOS.
siarzhuk вне форума   Ответить с цитированием
Старый 14.01.2017, 21:08   #31
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Orel
Возраст: 38
Сообщений: 4,311
Вес репутации: 4216/116
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
Member
 
Аватар для siarzhuk
 
Регистрация: 08.11.2014
Возраст: 46
Сообщений: 91
Вес репутации: 761/17
siarzhuk is a splendid one to beholdsiarzhuk is a splendid one to beholdsiarzhuk is a splendid one to beholdsiarzhuk is a splendid one to beholdsiarzhuk is a splendid one to beholdsiarzhuk is a splendid one to beholdsiarzhuk is a splendid one to behold
По умолчанию Re: LwIP для STM32. Вопрос по освобождению памяти при приеме данных.

Цитата:
Сообщение от Pridnya Посмотреть сообщение
почему в теме про LwIP предлагается что-то свое, а не из приложения к стеку.
Ну с термином "штатный" это я пожалуй загнул - contrib в опенсорце это доработки от лиц, не участвующих в проекте. Да и с многовариантностью предложений решения проблем не вижу - идеальный код недостижим в принципе, всё знать невозможно, а у всякого писателя всегда есть что потянуть. Вероятно испорчен я опенсорцом безвозвратно.
siarzhuk вне форума   Ответить с цитированием
Старый 15.01.2017, 18:46   #33
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,229
Вес репутации: 4257/98
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,229
Вес репутации: 4257/98
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/89
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:32.


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