Java Socket - 如何在3点之间发送和接收信息?

时间:2012-06-26 15:53:06

标签: java sockets networking tcp ip

在我的应用程序中,多台PC将连接到服务器。服务器将接收消息,然后发送到系统。系统可以将消息发送回服务器,并且该消息应该由服务器发送到PC。基本上就是这样:

PC 0 -------------------->服务器---->将PC消息发送到系统 系统------>将消息发送到PC 0服务器----> PC 0

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

但我怎么能这样做?我已经可以将PC msg发送到Server和Server to System,如下所示:

这是从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发送消息?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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