2012-06-10 48 views
0

我目前正在用Java寫一個聊天室程序。有一個服務器可以處理所有的客戶端連接和一個主要的顯示器,在這裏所有的談話都在發生。我想包括的一個功能是不斷更新邊欄中聊天室中所有用戶的列表。然而,程序工作的方式是客戶端用服務器打開一個字符流,數據以這種方式來回發送。如何在聊天室程序中實現不斷更新的用戶列表?

現在,從客戶端發送到服務器的任何字符都會被轉發到所有客戶端並放到主顯示屏上。但是,我想從服務器向客戶端發送關於用戶列表的信息。我如何能夠區分用戶列表信息和主要顯示信息?

+0

也許使用協議?例如'main blabla'會發送信息'blabla'到主顯示器,而'join xyz'和'part xyz'則分別表示用戶加入和離開信號。 –

+0

您可以創建另一個連接來發送/接收額外的信息/命令(如更新用戶列表等),或者實現自己的協議。 – HectorLector

+0

如果用戶用「main」或其中一個關鍵字開始他們的消息,會不會是一個問題?編輯:沒關係,我明白你在說什麼。謝謝! – CowZow

回答

1

1-您可以有兩條通信線路。一行(套接字連接)將接受用戶列表的傳入事件。另一行將接受用於主顯示屏的信息。最好不要打開許多到服務器的連接,因爲您需要在一個端口上打開更多端口或處理來自單個客戶端的多個連接。

2-您可以使用控制標誌或消息類型,以便區分您從服務器接收的消息類型。當它與更新用戶列表有關時,您可以這樣做,當它在主板上顯示某些內容時,會顯示它。