Перейти к публикации
Форум - ComputerCraft
NEO

network interface Сетевой интерфейс для OpenOS

Рекомендованные сообщения

Привет всем! Вчера произошёл интересный момент, Дмитрий Бачило https://www.youtube.com/channel/UC5dgoavpIertLkNDDITDoBQ выпустил перевод фильма Revolution OS (Всем рекомендую смотреть), фильм об GNU, в начале был момент интервью с создателем ядра Линукса Линусом, так вот он сказал, операционная система должна упрощать разработку ПО, сегодня зашёл товарищ Программист135 выпустил тему ДНС, я естественно полез читать код и меня натолкнуло на мысль увидев строку кода -  modem.send(dns_server, 19178, "dns_request", dns_address)  , все мы понимает что она делает, я увидел очень узкое место всей библиотеки, а именно работа только с один способом передачи данных, самое просто и нативное, такую библиотеку нельзя использовать в OpenNet или других сетях без переделки, а лучше иметь программу сразу под несколько сред передачи данных, но поддерживать много версий тоже не хочется, а тем более мы программисты и должны всё автоматизировать и упрощать, тут возникла мысль связанная с словами Линуса, так как я знаком с разработкой сетевых приложений под реальные ОС я знаю что ОС очень, очень упрощает работу с ней, скрывая протоколы и всю нативность у себя в ядре, почему бы не сделать более простую но тем не менее эффективную доработку OpenOS которая будет управлять разными протоколами. Мне интересно выслушать чужие мнения.

 

https://www.youtube.com/watch?v=n1F_MfLRlX0&t=1556s

Изменено пользователем NEO

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Моё первое мнение - большие полотна текста, где код идёт вперемешку с пояснениями и ссылками, и всё разделено только запятыми, а-ля "поток сознания" - меня пугают.  :)

 

А вообще, что ты имеешь ввиду под "разными протоколами"?

Сначала наверное надо стардартизировать способы передачи данных. Тогда и появится возможность объединить их в какой-то библиотеке.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Моё первое мнение - большие полотна текста, где код идёт вперемешку с пояснениями и ссылками, и всё разделено только запятыми, а-ля "поток сознания" - меня пугают.  :)

 

А вообще, что ты имеешь ввиду под "разными протоколами"?

Сначала наверное надо стардартизировать способы передачи данных. Тогда и появится возможность объединить их в какой-то библиотеке.

Я уже как - то начинал что - то подобное писать.

Что - то похожее на сокеты, но только там можно определить протокол. А ядро само создаст сокет и будет соответственно его для каждого протокола по своего обрабатывать. А конечная программа будет только send и receive вызывать.

Изменено пользователем NEO

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По сути, ты собираешься воскресить и документировать OpenNet, а потом написать над ним обёртку. =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По сути, ты собираешься воскресить и документировать OpenNet, а потом написать над ним обёртку. =)

Не только для OpenNet.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не только для OpenNet.

 

Для OpenNet и обычной передачи данных через модем. А других протоколов у нас вроде и нету.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

как по мне надо дополнить ОпенОСь своим средством работы с сетевыми интерфейсами, да бы они имели общий интерфейс доступа но разное внутренне строение, то есть будут определенные базовые методы в каждом интерфейсе, но различные способы передачи, например OpenNET, другой ip2b и т д, это даст возможность писать сетевые приложения, не вдаваясь в специфику реализации того или иного сетевого интерфейса, чтоб для всех приложений они были одинаковы, но и при этом не отнимать саму специфику, например тот-же OpenNet, насколько я щнаю в нем есть метод getIP (или чтото в этом духе) нужно чтоб из специфической программы (например для подключения в опеннет сеть) были доступны все методы, а в сетевом интерфейсе все сводилось к общему стандарту, я совершал попытку замутить чтото подобное, но это были наброски на коленке ( http://pastebin.com/Xwc0VVBa - тут можно сие лицизреть), естественно это такая штука нужна, и ее надо разработать)

Изменено пользователем ALeXeR

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В принципе, да. Некий общий интерфейс, который с одной стороны могли бы использовать программы, а с другой стороны реализовывать разные имплементации сетей не помешал бы.

Тут главное его не усложнять и сделать максимально простым и гибким.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну вот, меня эта фразочка немного расстроила..  :unsure: 

 

 

такую библиотеку нельзя использовать в OpenNet или других сетях без переделки,

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну вот, меня эта фразочка немного расстроила..  :unsure:

Почему?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сделал первые наброски, тебе такой вопрос, нужна - ли проверка состояния канала?

https://gist.github.com/Avaja/95fffca7d0c9ed8ea5d1e1d0512d5c6d

native.lua нужно положить по пути /bin/net.

Изменено пользователем NEO

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня вопрос собственно. Что это за хрень и почему мне надо 400 строчек кода, чтобы послать сообщение по сети? :P

 

Вооружившить вот это цитатой из первого поста: "операционная система должна упрощать разработку ПО", я реквестирую пример использования этой хрени.

Изменено пользователем Totoro
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня вопрос собственно. Что это за хрень и почему мне надо 400 строчек кода, чтобы послать сообщение по сети? :P

Я пытался реализовать сокеты.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

думаю что сокеты лучше добавить в более высоком уровне адстракции, хотя можно и сшить аккуратно)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
думаю что сокеты лучше добавить в более высоком уровне адстракции, хотя можно и сшить аккуратно)

В каком смысле?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

просто зачастую их реализуют на высоких уровнях, образуя потоки, но тут "смотря как смотреть")

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Осталась какая-то мелочь.

Написать абстракцию полноценных потоков над корутинами, потом над ней абстракцию real-life сокетов, и будет готова сетевая библиотека нашей мечты!

Наконец-то мы сможем сократить эту громоздкую конструкцию:

modem.send(message)

Ура, товарищи!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

думаю что эту систему стоит реализовать библиотекой (/lib/файл_библиотеки.lua), конфигурационные файлы, содержащщие в себе инфу о списке интерфейсов (/etc/файлы.cfg), и комманду для рабты с ней (чтото в роде ifconfig)

библиотека создаст таблицу с интерфейсами и обьявит методы, эти методы не будут чемто примечательны, просто работа с таблицами, проверки и прочие, например:

 list(type) - вернет итератор для получения интерфейсов по типу если тот указать

 add(name,type,meth, ...) - добавляет интерфейс

 get(name) - получает интерфейс по имени

 set(name,meth, ...) - изменяет интерфейс

ну и многие другие...

 

также было бы не плохо регестрировать листенеры для событий интерфейсов (удаление, сообщение, добавление и т д)

ну и генерировать сигналы при вызовах определенных методов

 

А с самим струкетурой интерйеса надо будет еще подумать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Осталась какая-то мелочь.

Написать абстракцию полноценных потоков над корутинами, потом над ней абстракцию real-life сокетов, и будет готова сетевая библиотека нашей мечты!

Наконец-то мы сможем сократить эту громоздкую конструкцию:

modem.send(message)

Ура, товарищи!  -_-

Ну да, только эта строчка ограничивает тебя в радиусе 400 блоков.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как дела у революционных сетевых технологий?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну да, только эта строчка ограничивает тебя в радиусе 400 блоков.

А сеть из точек доступа в режиме репитера не поможет увеличить покрытие сети?

Правда, не ясно, как эта сеть борется с петлями, и не будут ли в результате петель дублироваться сообщения, и как это выдержит сервер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А сеть из точек доступа в режиме репитера не поможет увеличить покрытие сети?

Правда, не ясно, как эта сеть борется с петлями, и не будут ли в результате петель дублироваться сообщения, и как это выдержит сервер.

 

По моему как-то ловили уже такой глюк. Сообщения нарастали лавинообразно, и начинался апокалипсис.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×