Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在没有';安装了JDK_Java_Sockets_Serversocket - Fatal编程技术网

Java 在没有';安装了JDK

Java 在没有';安装了JDK,java,sockets,serversocket,Java,Sockets,Serversocket,我目前正在编写一个基于客户机-服务器的工具。由于IP地址不稳定,我的想法是让服务器应用程序使用服务器的正确IP编译客户端应用程序 逐步: 服务器应用程序启动 用户查看其服务器计算机的当前IP(这可以通过webbrowser手动完成) 使用此IP,他创建(编译)一个客户端,该客户端搜索到此IP的连接(一旦启动) 为了实现这一点,有必要在设置了IP之后编译客户端 客户端作为后台应用程序运行,没有任何GUI或控制台窗口。因此,在客户端添加IP不是我搜索的内容。最大的新手应该能够运行客户机并完成他们的工

我目前正在编写一个基于客户机-服务器的工具。由于IP地址不稳定,我的想法是让服务器应用程序使用服务器的正确IP编译客户端应用程序

逐步:

  • 服务器应用程序启动
  • 用户查看其服务器计算机的当前IP(这可以通过webbrowser手动完成)
  • 使用此IP,他创建(编译)一个客户端,该客户端搜索到此IP的连接(一旦启动)
  • 为了实现这一点,有必要在设置了IP之后编译客户端
  • 客户端作为后台应用程序运行,没有任何GUI或控制台窗口。因此,在客户端添加IP不是我搜索的内容。最大的新手应该能够运行客户机并完成他们的工作
  • 我认为我可以将javac解包(从Java应用程序中解包),然后将类写入一个文件(作为完整的字符串),然后运行一个控制台命令,该命令使用javac.exe编译一个可运行的jar文件。但这当然不是那么容易。我的问题是,我不想把整个JDK文件夹放到服务器应用程序中,只是为了编译客户机。你们有谁知道我该怎么处理这件事吗


    重要的是,我必须与没有安装JDK的计算机打交道,只是与没有编译器的标准JRE打交道(当然)。

    这绝对不是一个好办法。有两种更简单的替代方法:

  • 将服务器的IP地址或主机名作为参数传递给客户端应用程序(例如,通过命令行)。这不需要对客户机进行任何更改,但需要您以某种方式传递该参数

  • 如果您想变得非常聪明,您可以让客户端应用程序的文件名包含IP(例如,作为十六进制值:连接到
    127.0.0.1
    的客户端可能被称为
    client-7f000001.jar
    )。不过,你必须确保它没有被重命名

  • 在客户机JAR文件中嵌入一个包含服务器IP地址的文本文件。因为JAR只是一个ZIP存档,所以不需要编译器来完成这项工作


  • 如果服务器和客户端在同一个本地网络上运行,您还可以执行以下操作:到您的第一点:当没有连接时,我如何传递IP?IP是所有进一步通信的基础,但如果没有它,客户端甚至不知道他们必须“听”到哪里。还是我做错了什么?第三:这实际上是可行的。。。我想得越多,听起来就越有同情心。然后我就可以编辑这个文本文件并“解包”已编译的客户端。我认为这是一个很好的选择。但有一个问题:编译这样的东西有那么难,还是只是有点开销?谢谢你的帮助!:)@TrudleR尽可能地压缩任何文件。(=无论如何都不难)@TrudleR但如果你打算编译客户机jar,你必须有一些方法将客户机jar传送到目标计算机->你必须有一些传送东西的机制,你可以同样好地使用这些东西将IP作为文本信息传递,并在启动应用程序时使用它。我看不出有任何理由将IP存储在.jar中。如果将其存储在jar中,它会更干净。:)你只需要交一个文件,它就完全可以自己处理了。也许在这一点上我对可用性有点友好,但我讨厌一个程序有多个拼图部分。无论如何:如果它在jar中,你不必担心文本文件的路径。它始终是一条内部路径,并且始终是相同的。