Java中的客户机-服务器聊天应用程序

Java中的客户机-服务器聊天应用程序,java,tcp,udp,client-server,Java,Tcp,Udp,Client Server,我目前正在尝试用Java实现一个客户机-服务器聊天应用程序。本项目的简要说明是,许多客户机应该能够连接到一个中央服务器,每个客户机通过该服务器进行通信。其工作应如下: 服务器已启动 许多客户端已启动并“连接”到服务器 客户端A向服务器发送消息,服务器将消息转发给客户端B、C等 服务器停止,所有连接关闭 我一直在讨论实现这一点的不同方法,并想了解一下TCP或UDP是否是实现客户端和服务器之间通信的更好协议。我曾考虑在服务器到客户端的通信中使用UDP多播,但这导致了用于客户端到服务器通信的UDP套接

我目前正在尝试用Java实现一个客户机-服务器聊天应用程序。本项目的简要说明是,许多客户机应该能够连接到一个中央服务器,每个客户机通过该服务器进行通信。其工作应如下:
  • 服务器已启动
  • 许多客户端已启动并“连接”到服务器
  • 客户端A向服务器发送消息,服务器将消息转发给客户端B、C等
  • 服务器停止,所有连接关闭

  • 我一直在讨论实现这一点的不同方法,并想了解一下TCP或UDP是否是实现客户端和服务器之间通信的更好协议。我曾考虑在服务器到客户端的通信中使用UDP多播,但这导致了用于客户端到服务器通信的UDP套接字出现问题。使用TCP与服务器通信,然后使用UDP多播,这有意义吗?或者我应该放弃多播,只使用UDP数据报,而服务器保留从中接收消息的所有客户端的集合,以模拟“连接”。

    我建议您使用TCP。这相当容易,而且您不必处理数据包顺序、数据包丢失等,因为TCP已经为您完成了这项工作。你可以看看这个软件包,它有一些功能,可能会派上用场


    如今,由于越来越多的用户获得了更快的连接速度,每个包额外的几个字节最终也不会有多大作用,因此使用TCP产生的开销几乎可以忽略不计。我从你的问题中了解到,它只处理有限的一组客户,因此它会受到更少的关注。

    我建议你使用TCP。这相当容易,而且您不必处理数据包顺序、数据包丢失等,因为TCP已经为您完成了这项工作。你可以看看这个软件包,它有一些功能,可能会派上用场


    如今,由于越来越多的用户获得了更快的连接速度,每个包额外的几个字节最终也不会有多大作用,因此使用TCP产生的开销几乎可以忽略不计。从您的问题中我了解到,它只处理有限的一组客户端,因此会被注意到的更少。

    您希望扩展到多少个客户端?可能不超过10个客户端。您可以直接使用
    JGroups
    库,这样您就可以将更多精力放在其他事情上,而不是解决网络协议问题,网络可靠性、网络性能和/或其他相关网络设计问题您希望扩展到多少个客户端?可能不超过10个客户端。您可以直接使用
    JGroups
    库,这样您就可以将更多精力放在其他方面,而不是解决网络协议、网络可靠性、,网络性能和/或其他相关网络设计问题