Перейти к содержимому
AtomicScience

OpenComputers Network Stack - TCP/IP-подобный сетевой стек

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

27 минут назад, AtomicScience сказал:

Окей, а теперь прикрути к своему примеру рукопожатие и завершение сессии

А зачем? Что дает рукопожатие и сессия? Это оверхед.

Удобно ~= сложно.

 

28 минут назад, AtomicScience сказал:

Я тоже могу "просто" (и обрати внимание, что твое пример оперирует с пакетами, а мой - с сессией):

Ну и получаем дикий оверхед в виде создания и уничтожения нового стрима на каждый пакет.

И да, ты все равно оперируешь пакетами (data) только через стрим, а не напрямую.

Сессия (что ты вообще имеешь в виду под сессией?) по-прежнему не нужна.

 

30 минут назад, AtomicScience сказал:

mNSP это всего лишь пример чудес, которые можно творить с помощью абстракции

Пока чудес не наблюдается. Ждем.

 

26 минут назад, AtomicScience сказал:

Вот именно - вы боитесь поднять голову выше банального пинг-понга пакетами между платками, а ваши низменные интересы ограничены фермами пшенца и картошечки на дронах и прочей ерунде уровня третьего класса церковно-приходской IT-школы.

Когда на AtomicWars (дай бог ему здоровья и стабильной работы) вы задумаетесь над чем-то более глобальным, чем пароли на двери и бурение шахт друг-другу... на участках, вы так или иначе столкнетесь с необходимостью соединить ваши компьютеры, дронов и роботов в сеть.

Тут главное не забывать, что мы все это творим в рамках майнкрафта. Картошечка на дронах - это наше все, и любая библиотека сильно выигрываешь, если она применима для картошечки. Если не применима - она остается уделом 2-х с половиной пользователей, которые пилят что-то глобальное свое. А такие пользователи обычно пишут свои велосипеды.

Что касается связи компьютеров - недостатка в программах для этого нет.

Есть, например:

Zn - динамическая p2p сеть, которая обеспечит связь по цепочке компов, и проста в использовании как обычный modem. Не требует никакой конфигурации вообще.

Stem - брокер сообщений на основе интернет плат. Мультиканальная передача сообщений откуда угодно и куда угодно, включая компы из реального мира. Опять таки - элементарен в использовании. Нуль настройки.

И это я только свои проги упоминаю. Их так-то полно.

 

13 минуты назад, AtomicScience сказал:

Интернет в рамках сервера

Делали, и не один раз. OpenNet, например. Был и браузер и сайты. Но в рамках сервера Minecraft это затея "на поглазеть один раз". Особого практического применения нет.

 

14 минуты назад, AtomicScience сказал:

Просто ты воспринимаешь Minecraft как игру, в рамках которой единственное использование OC - роботы-шахтеры и пароли на дверь, а я - как площадку, на которой можно побаловаться с протоколами и поиграть в сетевого программиста, попутно узнавая что-то новое для себя

Ну вот тут я конечно же полностью согласен и поддерживаю. Как творческий эксперимент - программа офигенна.

И объем работы проделан неплохой.

Короче жду продолжения.

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


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

Говорить о ненужности программы, так как ею нельзя копать "картошечку", не ахинея ли великая? Проснись, народ! Майнкрафт не на одной картошке повязан! Не пропустили ли вы "sandbox" у игры в описании? Так можно говорить, что и OC не нужен, и кубики не нужны, и вообще всё не нужно и бессмысленно. А такое уже лечить нужно.

 

Стримы нужны! Но не всякие:

  • Сеть должна иметь нормальную топологию. Работать внутри <=400 блоках модема — ненормально.
  • Потоки лучше тем, что юзеру не нужно мучаться с делением большого контента на пакеты, которые влезают в maxPacketSize. Если такого нет, это ненормально.
  • На получателе последовательность пакетов должна быть такой же, как и на сервере. Если сначала придут 3 байта конца, а потом 8192 байта начала, это ненормально.
  • Получатель должен получить все пакеты, которые отсылает отправитель. Если половина потеряется, а сеть не оповестит даже об этом получателя, это ненормально.
  • Получатель не должен получать дубликаты пакетов. Если сообщение вдруг вырастает в 2 раза по размеру, это ненормально.
  • В сети нужна какая-то защита от дудоса. Если кто-то в пещере делает вайл-тру-ду-сенд, и из-за этого никто другой не может юзать сеть, это ненормально.
  • Наконец, необходимость набирать огромную кучу лишнего кода, есть тоже ненормально. Если для ответа так или иначе надо создать свой стрим, так почему ж не сделать это сразу в либе и отдать аргументом функции-листнеру? Да и одним бы стримом можно было бы справиться, как мне кажется, смысла во втором не вижу.

Возможно, что-то из пунктов выше уже реализовано или реализовывается, пока я пишу этот пост. Я, к сожалению, знать об этом не могу, потому что качать какой-то архив с яндекс-диска — это близко к издевательству, а потому я этого и не делал.

 

P. S. Если кто-то обижен тоном этого поста, прошу прощения. Очень понравилось это выступление.

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


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

Я вот согласен с товарищем @Fingercomp почти по всем пунктам.

 

Что касается "картошечки", то тут мне видится два пути.

Либо ты презентуешь свою программу как ультра-мега утилиту, которая изменит жизни - и тогда она должна иметь хоть какое-то место собственно в жизни игроков форума. То есть она должна быть реально применима в как можно большем количестве случаев. То есть - никакого лишнего кода, все максимально удобно и максимально практично. "Картошечка".

Либо ты презентуешь свою программу как творческий эксперимент, и проект для фана - и тогда она естественно будет практически никому не нужна. Но ты получаешь полную свободу творчества, костылизма, велосипедирования и построения какого угодно хаоса. "Сандбокс".

 

А тут у нас "сандбокс", который пытается выдать себя за "картошечку", и при этом сыпет перлами вроде "комьюнити, без обид, ныне представляет из себя весьма жалкое зрелище" и "вы боитесь поднять голову выше банального пинг-понга пакетами между платками, а ваши низменные интересы ограничены фермами пшенца и картошечки на дронах и прочей ерунде уровня третьего класса церковно-приходской IT-школы", за то, что пользователи не увидели особенного смысла и пользы в презентованном творении.

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


Ссылка на сообщение
Поделиться на других сайтах
42 минуты назад, Totoro сказал:

А тут у нас "сандбокс", который пытается выдать себя за "картошечку", и при этом сыпет перлами...

Просто автор овладел постиронией, а комьютини – нет.

11 час назад, AtomicScience сказал:

 

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


Ссылка на сообщение
Поделиться на других сайтах
4 минуты назад, eu_tomat сказал:

Просто автор овладел постиронией, а комьютини – нет.

Хорошая отмазка.

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


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

@Totoro,@Fingercomp , искренне благодарю за качественной фидбек - благодаря вам я определил основные направления развития своего проекта.
Итак, к OCNSv2 я представлю:

  • Расширенное API протоколов mIP и mUDP, которое позволит работать с сетью с помощью слушателей, как предлагал Тоторо, а также через "ванильную" event-систему
  • Улучшенный протокол mNSP, значительно более упрощенный с точки зрения пользователя (боюсь, что в echo все-таки придется открывать второй поток :( )
  • Протокол mTCP и потоки, реализованные через него - это позволит гарантировать сохранность данных, правда, ценой скорости
  • Драйверы интерфейсов - на первое время реализую только modem и loopback

Но первым делом - выход на международную арену, то бишь на официальный форум. Авось, там что еще подскажут

 

P.S

Учите постиронию ;)

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


Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, AtomicScience сказал:

Учите постиронию ;)

Я бы поверил что это была постирония, или что угодно.

Но смущает отказ от русскоязычной документации. Он говорит вполне однозначно и без иронии - это форум не целевая аудитория. У проекта наполеоновские амбиции, и это взаправду.

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


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, Totoro сказал:

Я бы поверил что это была постирония, или что угодно.

Но смущает отказ от русскоязычной документации. Он говорит вполне однозначно и без иронии - это форум не целевая аудитория. У проекта наполеоновские амбиции, и это взаправду.

Хорошо, уговорил, будет тебе русскоязычная документация, но ко второй версии, и вики на GitHub мне в этом поможет

 

Может, еще какие предложения есть?

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

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


Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, AtomicScience сказал:

Может, еще какие предложения есть?

Пока и так дофига.

Верим, ждём, надеемся.

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


Ссылка на сообщение
Поделиться на других сайтах
В 07.06.2019 в 08:19, Fingercomp сказал:

В сети нужна какая-то защита от дудоса. Если кто-то в пещере делает вайл-тру-ду-сенд, и из-за этого никто другой не может юзать сеть, это ненормально. 

Кстати, это очень щепетильный вопрос, учитывая скорость вызовов к компонентам.

Лично я планирую реализовать функцию аппаратных сокетов, то есть позволить ARP'у получать не только физические адреса машин, но и выделять на них порт (который открывается на компоненте). Если сокет перегружен - modem.close('порт'). Элегантно, просто и надежно. Правда, порты для новых клиентов таким образом никак не защитить, но по крайней мере "старожилы" смогут пользоваться сетью без каких-либо затруднений.

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

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...