2

在我的应用程序中,多台 PC 将连接到服务器。服务器将接收消息然后发送到系统。系统可能会向服务器发回一条消息,而这条消息应该由服务器发送给 PC。基本上是这样的:

PC 0 --------> 服务器 ----> 向系统发送 PC 信息。
系统 ------> 发送消息到 PC 0 服务器 ----> PC 0

与 PC 1、2、3 等相同...

但是我该怎么做呢?我已经可以让 PC 消息到服务器和服务器到系统,如下所示:

这是从 ServerThread 运行的:

try {

    Socket socket = serverSocket.accept();

    if (socket != null) {

        clientList.add(new ClientThread(socket));
    }

} catch (IOException ex) {

    System.out.println(DEBUG
            + ": Failed creating client socket / "
            + ex.getMessage());
}

但是我怎么知道传入的套接字是要向服务器发送消息还是套接字应该向 PC 发送消息?

4

2 回答 2

2

您基本上是在实现即时消息传递,您的系统只是另一个端点(以及 PC0 ...)。如果您的服务器只是用作消息路由器,为什么不使用XMPP 之类的东西。

您可以使用Smack作为客户端解决方案,任何现成的XMPP服务器都可以轻松满足您的需求。如果您需要自定义服务器,您可以选择基于 Java 的服务器之一,例如Openfire

于 2012-06-26T16:19:52.447 回答
0

这种方法称为proxy. 为了区分客户端(您的问题中的 PC)和服务器(系统),您需要保持从客户端接受的连接,以及您发起的与服务器的连接分开,但交叉引用(最简单的是一对一映射)。在客户端连接上获取消息,可选择转换/过滤,在相应的服务器连接上发送,反之亦然。

于 2012-06-26T18:19:13.050 回答