我打算创建一个聊天消息应用程序,其中两个或多个客户端可以进行通信,但我有点困惑。
答案 0 :(得分:3)
客户端到客户端的通信没有任何意义,因为一旦系统开始接收消息它就被称为服务器,所以在通信中应该有一个服务器和客户端进行通信,否则情况将会像两个人说话而没有一个听。
客户端A可以充当服务器和客户端,因此客户端B, 在这样做时,两者都可以以两种方式进行通信,即发送和接收信息。
答案 1 :(得分:1)
是的,java可以使用套接字。 例如,Oracle的“官方”教程:http://docs.oracle.com/javase/tutorial/networking/sockets/
但直接使用套接字需要大量代码来编码/解码来自/到二进制形式的消息,将数据流分离为逻辑“数据包”,处理线程和消息队列等等。幸运的是,有一些网络库使得这个过程要容易得多。我会推荐Netty:http://netty.io/
关于客户/服务器关系。如果我们谈论TCP / IP,那么是的。一方(服务器)始终侦听连接,另一方(客户端)打开与服务器的连接。
但是,如果您使用UDP,从网络角度来看,所有参与者都是平等的。他们只发送和接收UDP数据包。
返回聊天应用程序:最简单的解决方案 - 所有客户端都连接到专用服务器。每条聊天消息都包含客户端ID。当服务器收到消息时,它会将其发送到具有指定标识的客户端。因此,每个客户端都可以将消息传递给其他客户端。服务器作为“调度员”工作。
答案 2 :(得分:0)
如果您需要简单的方法,可以尝试https://httprelay.io服务。你需要的只是http客户端而没有外部库。