2013-02-11 65 views
-3

我目前正在用Java编写TCP/IP客户端。客户端应该能够做的唯一事情就是运行服务器发送给它的代码。 我看过this question,但我的问题是,如果它是另一个应用程序,将运行代码,但如果客户端代码包含一个字符串,并且服务器发送消息说,读取该字符串并发回内容,则客户端将无法这样做,因为该代码将在另一个程序中执行,该字符串不存在:-(从输入运行代码,如果它是写在源代码中

那么有没有一种方法可以从输入运行代码,如果它是写入?该程序的源代码

所有帮助是非常赞赏:-)

实施例:

客户端包含一个表示“string0001”的字符串。 客户端应该运行服务器发送的代码。 服务器发送一个客户端可以执行的java代码块。代码说:检查字符串的内容并将其发送回该ip。 客户端现在应该能够读取字符串并将“string0001”发送回服务器ip。

使用链接提供的解决方案,服务器发送的代码将被执行,就像它是另一个程序一样,并且该程序中服务器请求客户端读取的字符串不存在。

客户端现在可以运行代码,就好像它写在客户端源代码中的字符串所在的位置。

希望帮助:-)

+1

可以请您逐一分解这些步骤,详细说明客户端和服务器之间的数据流。目前这很难实现。我相信这是一个很好的问题,但是你会面临降价的危险。 – Joe 2013-02-11 00:07:10

+0

请举一个具体的例子。什么是客户端代码中的字符串的例子? – 2013-02-11 00:07:24

+3

这听起来像一个安全噩梦... – 2013-02-11 00:09:33

回答

0

好第一个问题是,发送的源代码必须是完整的。 Java是一种面向对象的语言,因此要执行的代码可能会引用尚未发送的类。

这导致了第二个问题......它如何知道它何时收到所有的代码,以及代码需要的包和文件?

如果代码是一个没有方法或类的非常简单的例程,您可以使用方法创建一个类并将传入的代码插入到该类中,然后将其保存在内存中。

然后,您可以使用类似的例程编译此代码,以回答here的问题。

+0

但是,当代码被编译后,它将无法从原始代码中读取字符串: - (或者我误解了一些东西?无论如何感谢:-) – Deni 2013-02-11 00:20:24

+0

那么你会在内存中的字符串中的原始代码,所以如果你需要阅读它,无论出于什么原因,你会有它。 – 2013-02-11 00:24:55

+0

也许会有更好的问题,新应用程序中的代码如何执行以知道服务器IP是什么?如果你能以某种方式将代码发送到新创建的应用程序中,并且代码表示在此端口发送到此服务器,则该端口已被其他应用程序绑定。你的帮助非常感谢:-) – Deni 2013-02-11 00:29:54