Давайте запилим собственный протокол, и будет там сидеть перекидываться всякими байтами.
Работать будет всё на голом TCP, потому отправлять файлы другим участникам сети можно и через netcat. В целом принцип как IRC, но вместо строк - любые данные.
Формат отправляемых сообещений: Первая строчка, заголовок: channel mime length
- channel: название канала. Не должен содержать пробелов. К примеру cats.pics, random.pics, 2ch.chat, libre.soft - mime - mime-тип, тут понятно. - length - сколько байтов передаем/принимаем.
охуенно. но обычный клиент-сервер это как-то скучно. Да и не хочу палить я свой IP реальный. Если только создать echo-сервер, который будет все сообщения принятые дублировать на все подключенные TCP сеансы.
предлагаю так
2chp - контрольная фраза - 32 63 68 70 1 - версия протокола - 31 тема до 16 байт прим cats.pics, random.pics, 2ch.chat, libre.soft mime - mime-тип, тут понятно. length - сколько байтов передаем/принимаем
и еще надо бы над защитой подумать. передавать в чистом виде опасно
>>51154 > охуенно. но обычный клиент-сервер это как-то скучно. Провайдеры не хотят вводить IPv6.
> и не хочу палить я свой IP реальный. Добро пожаловать в I2P и Tor. У IRC нет ни шифрования, ни какой-то хитровыебанной маршрутизации, однако им активно пользуются в ш2з.
Шифрование это вообще дело отдельного протокола, мы не должны над таким заебываться, изобретать велосипеды не нужно.
Впрочем вести приватные переписки на каком-то канале крайне просто - gpg.
> Если только создать echo-сервер Я об этом и говорю. Можно взять любой echo-сервер с открытым исходным кодом, и это будет работать. Потому что серверу вообще не нужно ничего делать, кроме как ретранслировать данные.
>>51156 > Добро пожаловать в I2P и Tor. Система будет слишком переусложнённой ИМХО. Проще будет общаться в IRC over I2P
> Шифрование это вообще дело отдельного протокола А вот нихуя. Я не хочу, чтобы мои сообщения остались в СОРМ-3
> Я об этом и говорю. Можно взять любой echo-сервер с открытым исходным кодом, и это будет работать. Потому что серверу вообще не нужно ничего делать, кроме как ретранслировать данные. Ну так пиши свой сервер. Буду его дудосить неткатом и пингами. Алсо где гарантия, что ты не сольешь мой IP? Ну-ну. А если ты ляпнешь про I2P, то см. выше
>>51157 > Система будет слишком переусложнённой ИМХО Переусложненной она будет, если начнем придумывать велосипед с щифрованием и маршрутизацией.
> Проще будет общаться в IRC over I2P IRC может передавать только строки, и заточен под чатики. Stockings более общий протокол, задача которого просто обмениваться данными. Любыми. Поверх Stockings можно сделать чатик, mmo-rpg, что угодно.
>>51157 > Буду его дудосить неткатом и пингами. Но IRC до сих пор жив, и у протокола нет ни каких защитных мер от спама. И ничего, собираются небольшой кучкой людей по интересам и общаются. > Алсо где гарантия, что ты не сольешь мой IP? Если сервер находится в i2p у меня нет технических возможностей для этого.
>>51161 Я про то, что могу скачать какой-то файл и там будет вирус. Сервер же не будет чекать на вирусы. Это просто ретранслятор. IRC лишен таких заморочек. Там просто текст
>>51162 > что могу скачать какой-то файл и там будет вирус. Чтобы вирусу что-то делать, ему надо сначала выполниться, пока он это не сделает это просто String.
Релейный (брокерный) сервер поднять легко. Для этого нужен VPS (или домашний сервер с белым айпи). На сервере запускаешь `ncat -l -p ${PORT} --broker`. Всё, релейный сервер готов.
У меня появилась гениальная идея. Распределённый дата-блок. Условно говоря это что-то типа стены, куда все желающие могут срать своими байтами. На сервере есть цельный дата-блок размером N килобайт с ячейками одинакового размера. Сервер работает по принципу пула запросов от клиентов. В течение времени t сервер принимает запросы, а по окончании применяет изменения для данного дата-блока. Более ранние запросы имеют более высокий приоритет. Запрос представляет собой таблицу T ограниченным размером Ts, состоящую из формата {адрес Ta: значение Tv}, где Ta адрес записываемого значения в дата-блоке на сервере, Tv - значение ячейки дата-блока. Соответственно Ts это кол-во пар и размер сообщения.
>>51268 UPD Как дата-блок можно использовать картинку. По сути jpg или bmp контейнер, в котором будут закодированы байты. Таким образом новая картинка это новый дата-блок. Туда можно закодировать вообще все что-угодно. И с каждой новой итерацией картинка будет наполняться новой инфой и так будет твориться история.
>>51271 > пиксельспейс И да, и нет. У меня идея скорее создать распределённую таблицу.
Картинка как формат просто как предложение. Формально говоря, можно использовать любой. Просто когда у тебя картинка, то как-то проще и нагляднее выглядит дата-блок. Типа вот тут какой-то анон записал какой-то файлик, вот тут другой анон что-то еще написал. Круто же Но для простоты можно и без формата, да
UPD: Начав работу над серваком узнал, что оказывается в джаве нельзя создать беззнаковую переменную. Кек. Алсо делать протокол на голых сокетах это сложно. Т.е. довольно сложно. Проще сделать очередное вебговно на json. Для этого дохуя и больше либ. Но весь шарм, конечно, если перекидываться голыми байтами, да? Пилить tcp сервер на c++ пизда извращение. Там ебал я рот что-то делать. Алсо нашел где можно найти SQL дб буквально за даром. Но не уверен, как это можно использовать
>>51273 >Алсо делать протокол на голых сокетах это сложно > Пилить tcp сервер на c++ пизда извращение. Там ебал я рот что-то делать. Тогда какаой смысл в твоем поделии?
>>51279 Я не знаю. Я просто поддерживаю идею ОПа (хуя, который походу забросил тредж). Но просто было бы прикольно такое делать. Я просто не очень хорошо знаю с++. Плюс, как я понял, там нет кроссплатформенного варианта для сокетов. Там чет как-то сложно. Мб писать на расте будет проще. Я хз
Да и вообще пососал бы ты. Я хотя бы что-то предлагаю