3

我是 java 网络的新手,我有一个小项目,我想在 LAN 网络上下载它,只供五个用户使用。

我想使用 Java swing、MySQL 作为数据库和 Eclipse 作为 IDE。那么什么是使网络编程更容易的最佳框架,因为我不想从头开始。

我读过关于 Netty 和 Apache Mina 的文章,但我不知道这对我来说是否有好处。

4

2 回答 2

3

请参阅netty-vs-mina链接。您关于“最佳”的问题并不是真正的问答形式,不应在本论坛提出。

于 2012-03-20T04:10:09.290 回答
0

这个问题已有 5 1/2 年的历史,但尚未得到回答或关闭。这就是我写这篇文章的原因,假设提问者的意思是Server-Client-Model


我建议查看NetCom2。它是一个易于使用的框架,它为未来的改进保持了高度的模块化。

这个框架背后的概念可能看起来很奇怪,因为它是作为“网络上”的 Event-Bus构建的。通信基本上由对象组成,在网络上飞行以及对其做出反应的服务器/客户端。

在服务器上,您将编写一个 java 程序,它可能如下所示:

public class ServerMain {

    private ServerStart serverStart;

    public ServerMain(int port) {
        serverStart = ServerStart.at(port);
    }

    public void start() throws StartFailedException, ClientConnectionFailedException {
        serverStart.launch();
        serverStart.acceptAllNextClients();
    }
}

潜在客户看起来像这样:

public class ClientMain {

    private ClientStart clientStart;

    public ClientMain(String address, int port) {
        clientStart = ClientStart.at(adress, port);
    }

    public void start() throws StartFailedException {
        clientStart.launch();
    }
}

这就是您创建和启动服务器和客户端的方式。
您可以告诉客户端和服务器如何对某些对象做出反应。这应该在 [clientStart/serverStart].launch() 之前通过说明:

clientStart.getCommunicationRegistration()
           .register(MessageObject.class)
           .addFirst(messageObject -> System.out.println(messageObject));

serverStart.getCommunicationRegistration()
           .register(MessageObject.class)
           .addFirst((session, messageObject) -> session.send(messageObject));

现在您可以通过以下说明从客户端向服务器发送一些内容:

clientStart.send(new MessageObject());

这个例子基本上是一个 echo-server,在这里解释。
可以在此处此处找到更详细的两者之间的通信。

如果您对生成的输出感到不知所措,可以通过以下方式对其进行调节:

// Choose only one.
NetComLogging.setLogging(Logging.trace());
NetComLogging.setLogging(Logging.debug());
NetComLogging.setLogging(Logging.info());
NetComLogging.setLogging(Logging.warn());
NetComLogging.setLogging(Logging.error());
NetComLogging.setLogging(Logging.disabled());

这里有更详细的解释。


注释

请注意,该项目刚刚上线,文档仍在进行中。

另请注意,此框架仍处于测试阶段。我不建议将它用于生产用途,但我会看看它以供个人使用。

于 2017-10-09T10:48:56.553 回答