在我的应用程序中,多台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发送消息?
答案 0 :(得分:2)
您基本上是在实现即时消息传递,您的系统只是另一个端点(以及PC0 ......)。如果您的服务器只是用作消息路由器,为什么不使用XMPP之类的东西。
您可以将Smack用于客户端解决方案,任何现成的XMPP服务器都可以轻松满足您的需求。如果您需要自定义服务器,可以选择一个基于Java的服务器,如Openfire。
答案 1 :(得分:0)
这种方法称为proxy
。为了区分客户端(问题中的PC)和服务器(系统),您需要保持客户端接受的连接,以及您将发起连接到服务器,但交叉引用(最简单的是一对一映射)。在客户端连接上获取消息,可选地转换/过滤,发送相应的服务器连接,反之亦然。