Advertisement
ktdm

sendFile.lua

Jun 10th, 2017
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.72 KB | None | 0 0
  1. ------ способ кодировки символов base64 числами от 1 до 64 ------
  2. function fromNumbers(numbers, alphabet)
  3.     local s = ""
  4.     for i = 1, #numbers do
  5.         s = s..string.sub(alphabet, numbers[i], numbers[i])
  6.     end
  7.     return s
  8. end
  9.  
  10. function toNumbers(str, alphabet)
  11.     local nums = {}
  12.     local char
  13.     for i = 1, #str do
  14.         char = string.sub(str, i, i)
  15.         nums[i] = string.find(alphabet, char)
  16.     end
  17.     return nums
  18. end
  19.  
  20. function sendBigStr(str, msgSize)
  21.     print("Передача файла ".. fileName .." по сети...\n\n")
  22.    
  23.     local ender_net = require("ender-net")
  24.     local msgSize = ender_net.maxMessageSize
  25.    
  26.     local i, buf, percentile = 0, ""
  27.     local dataSize, sendedDataSize = #str, 0
  28.     ender_net.sendMessage(1, dataSize)
  29.     while true do
  30.         buf = string.sub(str, i + 1, i + msgSize)
  31.         if #buf == 0 then break end
  32.         ender_net.sendMessage(2, toNumbers(buf, base64.chars), 0.05)
  33.         i = i + msgSize
  34.        
  35.         sendedDataSize = sendedDataSize + #buf
  36.         percentile = math.floor(sendedDataSize / dataSize * 100)
  37.         print(percentile .. "%")
  38.     end
  39.     ender_net.sendMessage(3, {}, 0.3)
  40. end
  41.  
  42. ---------------------------------------------------------
  43. fileName = ...
  44. file = require("filesystem").open(..., "r")
  45. if file == nil then error("Файл не существует") end
  46. base64 = require("ender-net-base64")
  47.  
  48. -- Читаем содержимое файла в переменную fileContent
  49. local fileContent, buf='',''
  50. while buf do
  51.   buf = file.read(file, math.huge)
  52.   fileContent = fileContent..(buf or "")
  53. end
  54.  
  55. fileContent = base64.encode(fileContent)
  56.  
  57.  
  58. sendBigStr(fileContent)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement