【问题标题】:Load java function in Lua在 Lua 中加载 java 函数
【发布时间】: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,我没有资源可以跟踪。

标签: java lua


【解决方案1】:

您需要创建一个包装库,例如 C 语言中的那些。我不知道如何,但我希望这能给您一个方向感。

【讨论】:

    猜你喜欢
    • 2014-01-31
    • 1970-01-01
    • 2016-04-29
    • 2017-04-04
    • 2012-10-03
    • 2014-08-11
    • 1970-01-01
    • 2014-10-22
    • 2012-04-03
    相关资源
    最近更新 更多