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

OpenReactor

Пользователи
  • Публикации

    52
  • Зарегистрирован

  • Посещение

  • Победитель дней

    3

Сообщения, опубликованные пользователем OpenReactor


  1. Только что, ECS сказал:

    Дык попробуй отослать MOTD\r\n или MOTD\n, в 90% случаев серваки должны адекватно проинтерпретировать сообщение, если это прям не лютый кастом

    Оки. Спасибо завтра попробую отпишу.

    • Спасибо 1

  2. 2 минуты назад, ECS сказал:

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

     

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

    Сервер то не мой. Ладно тогда время кастылей)

    • Спасибо 1

  3. 8 часов назад, Fingercomp сказал:

    Это весь код? motd — это глобалка? Исходя из чего было установлено, что оно работает? И как оно в принципе работать может, когда в либе internet функции write подавно нету и не было никогда?

     

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

    local soc = require("internet")

    soc.open("localhost", 2888)

    soc:write("MOTD")

    motd = soc:read(100)

    Я хочу допустим запросить motd ещё раз то я получу nill

    soc:write("MOTD")

    motd = soc:read(100)

    • Спасибо 1

  4. 1 час назад, eu_tomat сказал:

    Не будем ему в этом препятствовать. Каков формат этих данных? Как их интерпретировать?

    Какой участок строки отвечает за что?

    Какой критерий позволяет определить, что versions = 1.1?

    У меня есть строка:

    local reguser = "1.10a4d55a8d778e5022fab701977c5d840bbc486d0,d8f4590320e1343a915b6394170650a8f35d6926,8888"

    мне надо всё ввести в переменные:

     

    versions = 1.1

    login = '10a4d55a8d778e5022fab701977c5d840bbc486d0' здесь допустил ошибку "0a4d55a8d778e5022fab701977c5d840bbc486d0"

    pass = 'd8f4590320e1343a915b6394170650a8f35d6926'

    seed = 8888

    Как обрезать это?

    первые 3 символа.

    1.1

    • Спасибо 1

  5. 2 часа назад, eu_tomat сказал:

    Сеанс телепатии прошёл неудачно. Я счёл вводные данные ошибочными.

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

     

    Это ошибка, или так и задумано?

    local reguser = "1.10a4d55a8d778e5022fab701977c5d840bbc486d0,d8f4590320e1343a915b6394170650a8f35d6926,8888"

    local reguser = "1.10a4d55a8d778e5022fab701977c5d840bbc486d0,d8f4590320e1343a915b6394170650a8f35d6926,8888"

     

     

     

    Это то что отправляет сервер.
     

    • Спасибо 1

  6. В 05.08.2021 в 21:22, eu_tomat сказал:
    
    > reguser = "1.1,10a4d55a8d778e5022fab701977c5d840bbc486d0,d8f4590320e1343a915b6394170650a8f35d6926,8888"
    > t={}
    > for s in reguser:gmatch("([^,]+)") do t[#t+1]=s end
    > versions, login, pass, seed = table.unpack(t)
    >
    > print( versions )
    1.1
    > print( login )
    10a4d55a8d778e5022fab701977c5d840bbc486d0
    > print( pass )
    d8f4590320e1343a915b6394170650a8f35d6926
    > print( seed )
    8888

     

    1.1,10a4d55a8d778e5022fab701977c5d840bbc486d0,d8f4590320e1343a915b6394170650a8f35d6926,8888

    У меня версия без запятой.

    "1.10a4d55a8d778e5022fab701977c5d840bbc486d0,d8f4590320e1343a915b6394170650a8f35d6926,8888"

    Можно ли всё сделать без запятой?

    • Спасибо 1

  7. 1 час назад, Fingercomp сказал:

    Только байты интересуют? С сокетами проблем нету? У меня сомнения, потому что вопрос элементарный. Тем не менее.

     

    В питоне строка str хранит последовательность символов (codepoint) юникода каким-то абстрактным образом, потому что закодировать их можно по-разному: utf-8, utf-1, utf-16, utf-32, ucs-2 или какая-то другая, самопальная кодировка. bytes же — это набор байтов, как можно догадаться, а не символов. Если мы хотим из str сделать bytes, нужно абстрактный набор юникод-символов превратить в конкретную последовательность байтов — этим и занимается кодировка.

     

    Здесь bytes("PING", encoding="utf8") вернёт то же, что и литерал b'PING' в utf8-кодированном исходнике, например: последовательность из 4 байтов с номерами 90, 73, 78, 71.

     

    Теперь про Луа. В Луа никакого абстрактного набора символов нет. Строка в Луа — это не набор символов юникода, как str, а конкретная последовательность из произвольных байтов. То есть такая же вещь, как и bytes в Питоне.

     

    Поэтому аналог bytes("PING", encoding="utf8"), или же b'PING' (если исходник в кодировке utf-8), — просто "PING" (впрочем, опять-таки, в utf8-кодированном коде)

    
    sock:write("PING")

     

    Спасибо! С сокетами нету проблем)

    • Спасибо 1

  8. 1 минуту назад, VladG24_YT сказал:
    
    io.write("Install OpenOS? [Y/n] ")

    Далее, если нужна проверка на Y, то

    
    if ((io.read() or "n") .. "y"):match("^%s*[Yy]") then
      --код, если пользователь ввёл y или Y
    end

    А если нужна проверка на N, то

    
    if not ((io.read() or "n") .. "y"):match("^%s*[Yy]") then
      --код, если пользователь ввёл n или N
    end

     

    Спасибо


  9. 11 час назад, Mihis сказал:

    Возвращаемся к вопросу: Как загрузить файл на сервер?

     

    И из уточняющих вопросов получаем ответ:

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

    Я не знаю каким способом это делать может есть примеры?


  10. 24 минуты назад, eu_tomat сказал:

    Из OpenComputers файл можно переслать через PUT-запрос. В качестве примера рекомендую изучить pastebin.lua, позволяющий как скачивать, так и отсылать файлы.

    Но я только начал изучать lua и для меня это как-то сложно(


  11. 9 минут назад, Bs0Dd сказал:

    Ну если он на компе в игре, можно либо вытащить его с папки в мире, ибо все жесткие представляют из себя папки в реальной системе

    Либо, если есть выгрузка по фтп, можно употребить фтп клиент от LeshaInc

     

    У меня не роботает FTP СLIENT

    https://prnt.sc/xtxr2q


  12.  

    1 минуту назад, eu_tomat сказал:

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

    У меня есть сайт - хостинг я хочу залить туда тхт и считать на сайте. Обычный Html

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