Advertisement
HawkPB

Untitled

Aug 6th, 2024 (edited)
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. --server client made easy [[CLIENT]]
  2.  
  3. local clientIdentifier="client2"
  4. local serverport=1
  5. local useStrictServerAddress=true
  6. local serverAddress=""
  7. local unnessecaryPrints=true
  8. local noseyModem=true
  9.  
  10. --/requires/--
  11. local modem=require"component".modem
  12. local event=require"event"
  13. local thread=require"thread"
  14. local computer=require"computer"
  15.  
  16. --/core functions/--
  17. function containsValue(table, value)
  18. for _, v in pairs(table) do
  19. if v == value then
  20. return true
  21. end
  22. end
  23. return false
  24. end
  25. local function splitString(input, delimiter)
  26. local result = {}
  27. local pattern = string.format("([^%s]+)", delimiter)
  28.  
  29. for match in string.gmatch(input, pattern) do
  30. table.insert(result, match)
  31. end
  32.  
  33. return result
  34. end
  35. local function startsWith(str, prefix)
  36. return string.sub(str, 1, string.len(prefix)) == prefix
  37. end
  38. local function encrypt(args)
  39. local retString=""
  40. if args then
  41. if #args>0 then
  42. for _, arg in ipairs(args) do
  43. retString=retString..tostring(arg).."�"
  44. end
  45. end
  46. end
  47. if string.sub(retString,-1)=="�" then
  48. retString=string.sub(retString,-1)
  49. end
  50. return retString
  51. end
  52.  
  53. --/core variables/--
  54. math.randomseed(computer.uptime())
  55. local randomizedClientPort=math.random(1024,65534)
  56.  
  57. --/core init logic/--
  58. modem.broadcast(serverport,"/#@-REGISTER&"..clientIdentifier.."&"..tostring(randomizedClientPort))
  59. if unnessecaryPrints then print("client: Booted") end
  60. if unnessecaryPrints then print("client port: "..tostring(randomizedClientPort)) end
  61. --/api functions/--
  62. function sendRequest(id, args)
  63. if unnessecaryPrints then print("send request process: Sent ["..id.."] with packets: "..id .. "�" .. encrypt(args)) end
  64. modem.broadcast(serverport, id .. "�" .. encrypt(args))
  65. end
  66.  
  67. function createEventHandler(id,callback)
  68. if not modem.isOpen(randomizedClientPort) then modem.open(randomizedClientPort) end
  69. thread.create(function()
  70. if unnessecaryPrints then print("{Request Handler Thread ["..id.."]}: Created") end
  71. local _, _, from, port, _, message = event.pull("modem_message")
  72. print("ran")
  73. if port==randomizedClientPort and splitString(message,"�")[1]==id then
  74. print("{Request Handler Thread ["..id.."]}: Fired")
  75. print("{Request Handler Thread ["..id.."]}: Packets: "..message)
  76. local args=splitString(message,"�")
  77. table.remove(args,1)
  78. callback(args)
  79. end
  80. end)
  81. end
  82.  
  83. --/test code/--
  84. createEventHandler("pong",function()
  85. print("Pong")
  86. end)
  87. os.sleep(1)
  88. sendRequest("ping")
  89. print("Ping")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement