gpt4 book ai didi

java - 在 Clojure/Java 中将命令从客户端传输到服务器

转载 作者:行者123 更新时间:2023-12-02 04:34:23 26 4
gpt4 key购买 nike

我正在开发 Clojure 应用程序,其中客户端需要向服务器发送一些命令。这些将以相当大的数量发生,因此我希望它在处理和在线序列化大小方面都相当高效。

在 Clojure 中执行此操作的最佳方法是什么?

目前我正在考虑:

  • 创建一个简单的标准表示,例如{:command-id 1, :params [1 2 3 "abc"]}
  • 使用一些高效的 Java 库进行序列化,例如 Kryo ,并对其进行配置以了解 Clojure 数据类型
  • 使用 Java NIO 库组合适当的客户端/服务器套接字实现,以通过 TCP/IP 进行传输

然而,这看起来有点复杂,我相信其他人已经想出了更聪明的方法。非常感谢任何想法/建议!

最佳答案

如果参数不太大并且来源可信,为什么不来回发送 s 表达式,

(eval (read-string "(println \"Hello World\")"))

Clojure 作为 LISP 方言代码就是数据。

编辑:

为了安全起见,在读取字符串后,您将根据一组有效的命令检查该命令,

(contains? #{'println} 
(first (read-string "(println \"Hello World\")")))

或者您可以使用为此设计的库,例如

http://github.com/Licenser/clj-sandbox

关于java - 在 Clojure/Java 中将命令从客户端传输到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3124262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com