JAVA套接字客户端到客户端通信

时间:2014-03-06 06:00:34

标签: java sockets chat instant-messaging

我打算创建一个聊天消息应用程序,其中两个或多个客户端可以进行通信,但我有点困惑。

  1. java是否可以使用套接字与客户端进行客户端通信?
  2. 套接字通信是否始终需要服务器?
  3. 一个客户端是否可能站在通信服务器上?
  4. 您是否有客户与客户沟通的任何教程?
  5. 如果通信需要服务器,客户端A如何看到客户B的消息?

3 个答案:

答案 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客户端而没有外部库。