2011-11-02 169 views
1

我目前正在尝试使用Java实现客户端 - 服务器聊天应用程序。这个项目的简介是,许多客户端应该能够连接到一个中央服务器,每个客户端通过这个服务器进行通信。它应该如下: Java中的客户端 - 服务器聊天应用程序

  • 服务器启动时
  • 许多客户正在启动并“连接”到服务器
  • 客户端A发送一个消息给服务器,其转发给客户端B,C等
  • 服务器已停止,关闭所有连接
  • 我一直在实施这一不同的方式瞎搞,想一些建议对TCP或UDP是一个更好的协议来实现客户和服务器之间的通信。我正在考虑使用UDP多点传送进行服务器到客户端的通信,但这会导致用于客户端到服务器通信的UDP套接字出现问题。会使用TCP与服务器通信,然后UDP多播是否有意义?或者我应该放弃Multicast,并且全面使用UDP数据报,服务器将收到的所有客户端消息保存到模型“连接”中。

    +0

    您希望扩展到多少客户端? –

    +0

    可能不超过10个客户。 –

    +1

    您可以直接使用'JGroups'库,以便您可以更专注于其他事情,而不是解决网络协议,网络可靠性,网络性能和/或其他相关网络设计问题 –

    回答

    1

    我建议你使用TCP。这很容易,你不必处理包顺序,丢包等,因为TCP已经为你做了。你可以看看java.nio包,它有一些可能派上用场的功能。

    由于越来越多的用户获得更快的连接速度,并且每个包中多出的少量字节最终不会做太多工作,因此使用TCP所带来的开销几乎可以忽略不计。我从你的问题中了解到,它只能处理有限的一组客户,因此会更少地被注意到。

    相关问题