【发布时间】:2016-07-17 03:28:54
【问题描述】:
简单的问题:有没有办法在 Lua 中运行或加载 java 函数?
我正在尝试创建一个使用 Lua 在服务器和客户端之间传输文件的电话应用程序。服务端使用Java,客户端使用Lua。
这是一个接收文件的lua函数
function UDPClientModule.receiveFile()
local data, status
local chunks = {}
while true do
data, status = udp:receive()
print("status: ", status)
if data ~= nil then
table.insert(chunks, data)
--the filename is the last chunk to be received
if string.match(data, ".jpg") then
-- but strangely returns true
break
end
end
socket.sleep(0.5)
end
--combineAndOpenImage(t)
end
目前没有问题。但是,服务器发送的块被封装在这样的类中:
public class FileChunk {
private List<Data> dataList;
//functions below
}
public class Data{
private byte[] fileData;
// functions and adding file headers below
} // then UDPServer.java sends bytes of FileChunk
正因为如此,lua 函数接收到的数据包很奇怪,这也会导致string.match(data, ".jpg") 返回 true。所以我想运行java文件(例如UDPClient.java)来接收和解密这些块,而不是lua。
我不想更改服务器,也不想将客户端语言迁移到 java。我还没有找到任何有关这方面的资源,所以我需要帮助。
【问题讨论】:
-
不要依赖
the filename is the last chunk to be received。使用其他方法检测最后一个块。 -
@EgorSkriptunoff 注意。但问题是我无法使用 Lua 解码这些块。我可能想运行一个 java 帮助文件。
-
@warspyking LuaJ 用于在 Java 文件中运行 Lua 脚本。但是如何在 Lua 文件中运行 Java 函数呢?
-
要使用 Lua 解码块,你必须知道传入的数据格式。用任何编程语言编写解码器就足够了。
-
@EgorSkriptunoff 我知道块的格式。但我不知道将 java 创建的块解码为 Lua,我没有资源可以跟踪。