【问题标题】:difference between network mode and non-network mode网络模式和非网络模式的区别
【发布时间】:2014-05-11 01:28:16
【问题描述】:

在处理 java 中的客户端服务器应用程序时,我很难理解网络模式和非网络模式术语之间的区别。

我知道如何开发简单的客户端服务器应用程序。例如,我可以创建客户端应用程序和服务器应用程序。这些应用程序可以通过套接字连接并发送和接收数据。然而,当人们谈论在独立模式下运行服务器和客户端时,我感到困惑,其中客户端和服务器都使用相同的 JVM 实例,而不涉及环回网络。我已经看到 java derby 数据库发生了这种情况。

所以我的主要问题是如何获取使用套接字进行通信的代码并将其转换为使用客户端和服务器作为一个应用程序运行的所谓“独立模式”?我将不胜感激任何将我指向正确材料的 cmet。

【问题讨论】:

    标签: java sockets rmi terminology


    【解决方案1】:

    在所谓的网络模式下,您必须连接到远程服务器,正如您所描述的,通常通过套接字,因此您的客户端要求服务器执行某些任务,服务器执行任务并响应客户端.

    在这种模式下,习惯上客户端和服务器会是不同的节点,也就是不同的机器,独立运行。

    但是如果你想在同一台机器上运行你的客户端和你的服务器呢?即使在同一个虚拟机中?通过套接字请求您的服务器做某事是否有意义?

    这就像使用 Skype 与坐在你身边的朋友聊天,只是请他去吃午饭。

    因此,理想情况下,在这些情况下,您应该能够在非网络模式下运行您的应用程序。也就是说,您无需通过套接字,而是直接访问您的服务器对象并要求它为您做一些事情。由于您的服务器对象与您的客户端位于同一虚拟机中。

    显然,为了能够做到这一点,您需要一个良好的设计,通过接口公开您的服务器功能,并且您的应用程序使用该接口与服务器交互。当您在网络模式下运行时,您使用此服务器接口的实现,该接口使用套接字(或 RMI 或您为网络通信所做的任何事情)。当您处于非网络模式时,您将获得服务器对象本身的实现。

    【讨论】:

    • 这消除了我的一些困惑。但这意味着您将服务器和客户端捆绑在一个 jar 中。
    • @sheu 不一定,您可以将客户端捆绑在一个 jar 中,将服务器捆绑在另一个 jar 中,但在独立模式下,您的类路径中有两个 jar,即 java -cp client.jar:server.jar -Dmode=standlone MyApp
    猜你喜欢
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 2012-02-29
    • 2018-11-22
    • 2013-07-10
    相关资源
    最近更新 更多