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

OpenNet: Продолжение

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

На сервере Information Technology начинает работу глобальная сеть OpenNet. В отличии от децентрализованной сети CraftNet, новая сеть построена на компактно расположенных серверах. Связь клиента с одним из серверов осуществляется при помощи пары связанных плат, одна из которых установлена в сервер, другая находится у клиента. Каждый сервер способен обслуживать до трех клиентов. Таким образом связь защищена от прослушивания, а покрытие Сети полностью охватывает все доступные миры сервера Information Technology.
 
Что может и чего не может сеть OpenNet?
Если вы думаете, что подключившись к Сети вы получите все мыслимые и немыслимые блага, то вы ошибаетесь. Сеть это просто средство обмена информацией между двумя и более компьютерами. Как будут запрограммированы эти компьютеры и какого рода информацией будут обмениваться, зависит только от вас (ну и от меня, в какой-то мере)
 
Что необходимо, чтобы подключиться к сети OpenNet?
Во-первых, ОС-компьютер с установленной операционной системой.
Во-вторых, библиотека opennet.lua, которую можно найти под спойлером

 

local component=require("component")
local event = require("event")

local opennet = {}
local ONcard
local LocalIP

function opennet.getIP()
  if not component.isAvailable("tunnel") then
    ONcard=nil
    return nil, "OpenNet-карта не обнаружена"
  end
  ONcard=component.tunnel
  local ok,err=ONcard.send("", "", "getip")
  if not ok then  return ok, err  end
  local ev, addr, _, mess
  repeat
    ev, addr, _, _, _, LocalIP, _, mess = event.pull(3,"modem_message")
    if not ev then
      return nil, "Нет ответа от proxy-сервера"
    end
  until addr == ONcard.address and mess=="setip"
  return LocalIP
end

function opennet.send(recIP, ... )
  if not ONcard then
    return nil, "OpenNet-карта не инициализирована"
  end
  return ONcard.send(recIP, LocalIP, ...)
end

function opennet.receive(timeout)
  local ev
  repeat
    ev = {event.pull(timeout,"modem_message")}
    if not ev[1] then return nil end
  until ev[2] == ONcard.address
  return table.unpack(ev,7)
end

function opennet.sendrec(recIP, ... )
  local ok,err=opennet.send(recIP, ... )
  if ok then
    return opennet.receive(3)
  else
    return ok,err
  end
end
-----------------------------------------------------------------------
return opennet 

 

 

или скачать при помощи команды 

pastebin get VYqtYAXL opennet.lua

В-третьих, OpenNet-плата.

 
Где взять OpenNet-плату?
Количество плат, которые могут быть подключены к Сети, ограничено. Поэтому, массовых раздач я устраивать не собираюсь. Людям, которые проявили себя в программировании, я готов предоставить платы при личной встрече на сервере. Остальным, возможно, придется приобретать их в банке. Очень рассчитываю при этом на помощь наших банкиров: Тоторо и Алекса.
 
Какие функции предоставляет библиотека opennet?
getIP() - осуществляет инициализацию компьютера в Сети. В случае удачной инициализации, возвращает IP-адрес компьютера. В случае ошибки, возвращает два значения: nil и строку, содержащую информацию об ошибке. Следует отметить, что IP-адрес статический. Это значит, что при помощи одной ON-платы вы всегда получите один и тот же IP-адрес. Но это не избавляет от необходимости вызывать getIP всякий раз в начале работы с Сетью.
send(recIP, ... ) - отправляет данные на адрес recIP. Одним пакетом можно отправить несколько значений, которые должны быть числами, строками и/или логическими величинами. Суммарный объем данных, отправляемых в одном пакете, не должен превышать 8 кБ. Функция возвращает true, в случае удачной отправки или nil и сообщение об ошибке, в противном случае. Если функция вернула true, это означает, что данные были отправлены, но еще не означает, что они были приняты получателем.
receive([timeout]) - ожидает приема данных. Если задан параметр timeout, время ожидания ограничивается. В случае приема данных, возвращает первым значением адрес отправителя, затем - принятые значения. В случае таймаута, возвращает nil.
sendrec(recIP, ... ) - это просто объединение функций send и receive. Отправляет данные и возвращает полученный ответ. Очень удобно при работе из интерактивного интерпретатора.
 
А можно пример работы с библиотекой?
Пожалуйста.
На принимающем компьютере выполним следующие команды:

post-7-0-57831800-1429194347_thumb.png
После этого компьютер переходит в режим ожидания. Запомним (или, в моем случае, запишем) IP-адрес. На другом компьютере выполним команды для передачи данных на этот адрес:

post-7-0-56661800-1429194356_thumb.png
Теперь посмотрим на принимающий:

post-7-0-57967900-1429194363_thumb.png
К стати, если отправить данные на несуществующий адрес, в ответ от сервера будет получено сообщение:
post-7-0-80097600-1429194370_thumb.png

Каковы перспективы развития Сети?
1. Для начала планирую сделать DNS-сервер, чтобы можно было отправлять данные на удобочитаемые имена.(реализовано)
2. Создание чата, в котором школьники смогут материться не рискуя навлечь на себя гнев администрации (реализовано).
3. Организация доступа к OpenNet через обычную сеть путем установки роутеров в местах проживания игроков. (реализовано)
4. WEB-сервера с полезной или просто интересной информацией. Благо теперь на русском (требуется наполнение web-страниц).
5. Служба pastebin для доступа к известному ресурсу в условиях отсутствия интернет-платы (реализовано)
6. Да и много еще чего.

Изменено пользователем Zer0Galaxy
  • Like 2

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


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

3. Организация доступа к OpenNet через обычную сеть путем установки роутеров в местах проживания игроков.

5. Служба pastebin для доступа к известному ресурсу в условиях отсутствия интернет-платы

Хотеть!! Вот это то, чем я бы пользовался.

Но нужно что бы платы как то выдавались пока тебя нет в сети. Иначе гениальная мысль придет, и нужно будет ждать пока ты в онлайне будешь.

Еще, добавь пожалуйста в список реализовать функционал всех трех карт в одну (сеть, линк, интернет). То есть купил on-карту (или вставил безпроводную в зоне сети) и у тебя и интернет в придачу.

 

Но всё равно буду следить за развитием сети. Особенно интересно как будут пользоваться игроки.

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

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


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

Можно было сказать, я бы добавил в свою тему.

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


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

Хотеть!! Вот это то, чем я бы пользовался.

Боюсь, не смогу реализовать всё сразу. Рассчитываю на помощь. 

 

Но нужно что бы платы как то выдавались пока тебя нет в сети. Иначе гениальная мысль придет, и нужно будет ждать пока ты в онлайне будешь.

Планирую реализовывать платы через банк. Но на то нужна воля банкиров.

 

>>Можно было сказать, я бы добавил в свою тему. 

 

Я подумал, эта информация должна быть в начале темы вот и завел новую. Хочешь, перенеси в свою, а эту закроем

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


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

Планирую реализовывать платы через банк. Но на то нужна воля банкиров.

 

 

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

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


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

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

И в этом сложность?

Есть же CCC, роботы.

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


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

Я даже больше скажу, любая даже скрафченая плата не подойдет. Нужна плата, подключенная к Сети. И у меня таких есть несколько штук. Могу предоставить их в банк для реализации. 

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


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

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

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


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

Я даже больше скажу, любая даже скрафченая плата не подойдет. Нужна плата, подключенная к Сети. И у меня таких есть несколько штук. Могу предоставить их в банк для реализации. 

 

То есть есть, например 10 реальных уже существующих на руках у тебя, плат-сестер, которые надо продать?  А их близнецы уже запиханы куда-то и зарегистрированы в сети?

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


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

Совершенно верно. Только есть проблемка - они не стакаются

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


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

Совершенно верно. Только есть проблемка - они не стакаются

У робота может быть 48 слотов если не ошибаюсь. 48 карт будешь век продавать, если выдавать по 1-3 на руки.

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


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

Совершенно верно. Только есть проблемка - они не стакаются

 

Это верно.

 

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

 

И нам снова придется сидеть, крафтить новые платы и прописыавть их IP в базе.

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


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

Прописываются они автоматом. Но, вставлять их в сервер придется руками. Да и как мы узнаем, какие платы реально используются, а какие выброшены в лаву? Поэтому цена платы не должна быть слишком маленькой и если возможно надо ограничить выдачу плат в одни руки.

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


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

Прописываются они автоматом. Но, вставлять их в сервер придется руками. Да и как мы узнаем, какие платы реально используются, а какие выброшены в лаву? Поэтому цена платы не должна быть слишком маленькой и если возможно надо ограничить выдачу плат в одни руки.

 

 

Это даааа. Сильно маленькой то да, не должна. Но не дороже, чем ее себестоимость, а стоит она там копейки. Иначе кому она нужна будет. Мы плавно подходим к тому, что нужен не просто ванила-раздатчик простенький, а целый сервисный центр, где игрок регистрируется, получает аккаунт, ему выдается плата на руки, IP, или чего там, пароль. Две платы он купить не может уже на свой ник и т.д. и т.п.  

 

Редстоуном с ванила-раздатчиком  тут явно не обойтись. Надо городить целый Датацентр провайдеровский. :)

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


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

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

  • Like 1

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


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

Нео, сделаешь такой роутер?

Пока Сеть ничего из себя не представляет, покупать платы все равно никто не будет.

Сейчас Крутой работает над интернет-сервисом, я думаю над DNS. Со временем сделаем WEB-сервер, напишем браузер, может тогда спрос на ОН-платы появится.

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


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

Нужно посмотреть на вашу систему.


Нео, сделаешь такой роутер?

Пока Сеть ничего из себя не представляет, покупать платы все равно никто не будет.

Сейчас Крутой работает над интернет-сервисом, я думаю над DNS. Со временем сделаем WEB-сервер, напишем браузер, может тогда спрос на ОН-платы появится.

Для Web-браузер можно использовать инфо-панель от Тоторо.


Там есть теги.

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


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

Хочу рассказать об изменениях, произошедших в развитии OpenNet.

Во-первых создан и функционирует DNS-сервер.

Во-вторых реализована служба, позволяющая пользователям OpenNet получать доступ к сети Интернет.

Чуть ниже по порядку.

 

Что такое DNS-сервер и зачем он нужен?

Предположим, два пользователя Сети, Петя и Вася, обмениваются ON-сообщениями. Как это выглядело до сих пор: Петя, чтобы послать сообщение Васе, должен знать его IP. Именно на этот IP и отправляется сообщение. Вот так это можно представить графически

post-7-0-40247300-1429697722_thumb.gif

Сообщение проходит через ряд роутеров, которые и определяют путь прохождения. Как видим, в самом сообщении присутствуют IP-адреса получателя и отправителя.

Но, запомнить Васин IP в виде набора букв и цифр довольно сложно. Да и что делать если Вася сменил IP и не успел предупредить Петю? На помощь приходит DNS-сервер. Он позволяет зарегистрировать в сети уникальное имя и связать его с определенным IP. Начинается всё с регистрации имени

post-7-0-26835600-1429698134_thumb.gif

Как видно из рисунка, для регистрации DNS-имени, Вася посылает на сервер определенную посылку, в которой указывает желаемое имя, связанный с ним IP и пароль, который потребуется в случае необходимости внесения изменений. На рисунке я изобразил, что клиентский компьютер направляет сообщение прямо в DNS-сервер. Это конечно не так. Сообщение пройдет как минимум через роутер ef4. Мне просто не хотелось затемнять рисунок.

После регистрации имени, Петя может отправлять сообщение не на "ef4.d69", а на зарегистрированное имя "Vasya". Вот так это будет выглядеть:

post-7-0-32158300-1429698609_thumb.gif

Роутер 7e3, получив сообщение для получателя "Vasya", запрашивает IP у DNS-сервера и заменяет адрес получателя на этот IP. Но это не всё. Какое то время роутер продолжает помнить этот IP и последующие сообщения для получателя "Vasya" будет отправлять без обращения к DNS-серверу. Время это составляет ~25 минут.

Изменено пользователем Zer0Galaxy
  • Like 4

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


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

Дмитрий! Сеть пока так вся и состоит только из соединенных плат? Не планируется ли в будущем гибридная связь с использованием Wi-Fi?

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


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

Сейчас это первоочередная задача. Крутой сделал доступ из OpenNet в Internet, но прикол в том, что связанная плата в крафте дороже чем интернет-плата. Нужно упрощать доступ к ON, а это можно сделать только через WiFi или проводные роутеры

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


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

Кто mac-адреса называет ip?


Я бы присоединился,но так поглощён написанием виртуальной машины для исполнения ассемблерских команд.

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


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

Кто mac-адреса называет ip?

 

Это именно IP. MAC гораздо длиннее

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


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

А нельзя их сделать просто из цифр?

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


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

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

Да и просто,цифры можно прибавлять ,умножать,делить,делать над ними операции(Я думал ты сам понимаешь),а над символами что??

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


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

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

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

 

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

  • Like 3

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


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

Символы я умею перебирать.

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


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

Алекс, можно ли в районе спауна установить WiFi роутер?

Есть ли там работающий чанклоадер?

А где есть?

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


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

Конечно можно, он вряд-ли тебе откажет.

А компьютеры креативные, или им нужна энергия?

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


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

Меня в первую очередь интересует наличие чанклоадера. В админприватах будем ставить креативные компы, в частных - обычные.

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


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

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

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

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

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

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

Войти

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

Войти сейчас

×