OpenReactor
-
Публикации
52 -
Зарегистрирован
-
Посещение
-
Победитель дней
3
Сообщения, опубликованные пользователем OpenReactor
-
-
-
Только что, ECS сказал:Дык попробуй отослать MOTD\r\n или MOTD\n, в 90% случаев серваки должны адекватно проинтерпретировать сообщение, если это прям не лютый кастом
Оки. Спасибо завтра попробую отпишу.
-
1
-
-
2 минуты назад, ECS сказал:Сокет-сервак в режиме ресивера работает по накопительному принципу, и сообщения крайне часто будут стоять в буфере друг за дружкой, ожидая обработки, эт нормально. Высокоуровневые библиотеки решают эту проблему через протоколы прикладного уровня по OSI, а ты работаешь с "чистым" сокетом, поэтому придётся минимально пораскинуть мозгами
Решений несколько: можно на клиенте перед отсылкой пакета добавлять в начало байт-префикс с длиной содержимого, а на сервере читать накопившийся результат, основываясь на принятых длинах пакетов. Если этот вариант слишком сложен или избыточен (например, если твой софт передает преимущественно короткие сообщения-команды), то можно попросту разделять пакеты любым спец. символом - обычно в сокет-чатах используют символ перевода строки \n
Сервер то не мой. Ладно тогда время кастылей)
-
1
-
-
-
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
-
-
local soc = require("internet")
soc:write("MOTD")
motd = soc:read(100)
Всё роботает. А если я еще раз запрошу MOTD то или ошибка или ничего.
-
1
-
-
Как получить UNIX время в OpenComputer?
-
1
-
-
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
-
-
2 часа назад, eu_tomat сказал:Сеанс телепатии прошёл неудачно. Я счёл вводные данные ошибочными.
Но предположим, ошибки нет. Получается, что поля данных внутри исходной строки перекрывают друг друга.
Это ошибка, или так и задумано?
local reguser = "1.10a4d55a8d778e5022fab701977c5d840bbc486d0,d8f4590320e1343a915b6394170650a8f35d6926,8888"
local reguser = "1.10a4d55a8d778e5022fab701977c5d840bbc486d0,d8f4590320e1343a915b6394170650a8f35d6926,8888"
Это то что отправляет сервер.
-
1
-
-
В 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
-
-
У меня есть строка:
local reguser = "1.10a4d55a8d778e5022fab701977c5d840bbc486d0,d8f4590320e1343a915b6394170650a8f35d6926,8888"
мне надо всё ввести в переменные:
versions = 1.1
login = '10a4d55a8d778e5022fab701977c5d840bbc486d0'
pass = 'd8f4590320e1343a915b6394170650a8f35d6926'
seed = 8888
Как обрезать это?
-
1
-
-
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
-
-
import socket server = ("localhost", 8888) #I don't remember the port soc = socket.socket() soc.connect(server) version = soc.recv(5) #Decode it soc.send(bytes("PING", encoding="utf8")) pong = soc.recv(8) #Decode it
Как реалезовать это:
bytes("PING", encoding="utf8")
-
1
-
-
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
Спасибо
-
Хочу зделать запрос через консоль как так зделать?
-
Я хочу сделать чтобы "Hello World" писалось красным.
Как сделать?
-
11 час назад, Mihis сказал:Возвращаемся к вопросу: Как загрузить файл на сервер?
И из уточняющих вопросов получаем ответ:
Нужно написать php-скрипт для сервера, чтобы он принимал содержимое файла, отправляемое OC-машиной, и создавал файл с содержим полученного файла.
Я не знаю каким способом это делать может есть примеры?
-
1 минуту назад, Mihis сказал:Предполагаю, что там есть поддержка PHP? (там обычно где-то в панели должна быть графа с версией PHP)
Да там есть php
-
2 минуты назад, Mihis сказал:Я понял тебя. Давай для начала разберемся с серверной частью.
Что у тебя стоит на сервере? Apache? nginx? Или какой-то свой обработчик запросов?
Я думаю Apache точно не знаю.
-
17 минут назад, Mihis сказал:Я так понимаю, что вам нужно загрузить файл из OC-машины на свой сайт?
да
-
24 минуты назад, eu_tomat сказал:Из OpenComputers файл можно переслать через PUT-запрос. В качестве примера рекомендую изучить pastebin.lua, позволяющий как скачивать, так и отсылать файлы.
Но я только начал изучать lua и для меня это как-то сложно(
-
9 минут назад, Bs0Dd сказал:Ну если он на компе в игре, можно либо вытащить его с папки в мире, ибо все жесткие представляют из себя папки в реальной системе
Либо, если есть выгрузка по фтп, можно употребить фтп клиент от LeshaInc
У меня не роботает FTP СLIENT
-
1 минуту назад, eu_tomat сказал:И что мешает залить txt-файл тем же путём, каким заливаются html-файлы?
То что файл на OpenComputer)
Ты наверно не правильно понял? Я забыл написать в теме(.
-
1 минуту назад, eu_tomat сказал:Решение зависит от того, каким образом был сделан сайт. В большинстве случаев загрузка текстового файла ничем не отличается от загрузки других файлов, например, HTML-кода страничек или скриптов. Если же сайт был сделан каким-то конструктором сайтов, то решение зависит от конкретного конструктора. Какой случай у тебя?
У меня есть сайт - хостинг я хочу залить туда тхт и считать на сайте. Обычный Html


Отправка post запросов
в openOS
Опубликовано:
Хотел бы увидеть реализацию на OpenComputer.