Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --server client made easy [[CLIENT]]
- local clientIdentifier="client2"
- local serverport=1
- local useStrictServerAddress=true
- local serverAddress=""
- local unnessecaryPrints=true
- local noseyModem=true
- --/requires/--
- local modem=require"component".modem
- local event=require"event"
- local thread=require"thread"
- local computer=require"computer"
- --/core functions/--
- function containsValue(table, value)
- for _, v in pairs(table) do
- if v == value then
- return true
- end
- end
- return false
- end
- local function splitString(input, delimiter)
- local result = {}
- local pattern = string.format("([^%s]+)", delimiter)
- for match in string.gmatch(input, pattern) do
- table.insert(result, match)
- end
- return result
- end
- local function startsWith(str, prefix)
- return string.sub(str, 1, string.len(prefix)) == prefix
- end
- local function encrypt(args)
- local retString=""
- if args then
- if #args>0 then
- for _, arg in ipairs(args) do
- retString=retString..tostring(arg).."�"
- end
- end
- end
- if string.sub(retString,-1)=="�" then
- retString=string.sub(retString,-1)
- end
- return retString
- end
- --/core variables/--
- math.randomseed(computer.uptime())
- local randomizedClientPort=math.random(1024,65534)
- --/core init logic/--
- modem.broadcast(serverport,"/#@-REGISTER&"..clientIdentifier.."&"..tostring(randomizedClientPort))
- if unnessecaryPrints then print("client: Booted") end
- if unnessecaryPrints then print("client port: "..tostring(randomizedClientPort)) end
- --/api functions/--
- function sendRequest(id, args)
- if unnessecaryPrints then print("send request process: Sent ["..id.."] with packets: "..id .. "�" .. encrypt(args)) end
- modem.broadcast(serverport, id .. "�" .. encrypt(args))
- end
- function createEventHandler(id,callback)
- if not modem.isOpen(randomizedClientPort) then modem.open(randomizedClientPort) end
- thread.create(function()
- if unnessecaryPrints then print("{Request Handler Thread ["..id.."]}: Created") end
- local _, _, from, port, _, message = event.pull("modem_message")
- print("ran")
- if port==randomizedClientPort and splitString(message,"�")[1]==id then
- print("{Request Handler Thread ["..id.."]}: Fired")
- print("{Request Handler Thread ["..id.."]}: Packets: "..message)
- local args=splitString(message,"�")
- table.remove(args,1)
- callback(args)
- end
- end)
- end
- --/test code/--
- createEventHandler("pong",function()
- print("Pong")
- end)
- os.sleep(1)
- sendRequest("ping")
- print("Ping")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement