2011-11-02 171 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所帶來的開銷幾乎可以忽略不計。我從你的問題中瞭解到,它只能處理有限的一組客戶,因此會更少地被注意到。

    相關問題