在線聊天系統雛形總結

在線聊天系統的雛形,是對我學習了J2SE的基礎之後,開發練手的第一個項目;

該項目分成如下幾個步驟,並對每個步驟的知識點,做一定的小結:

1. 產生一個窗口:

主要用到的知識點是,從Frame中繼承;

2.窗口的初步佈局:

主要用到TextField和TextArea 兩個Api函數;

3.加入窗口關閉事件:

主要用到 匿名類,此處是一種固定的寫法,如下:

this.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e) {
disconnect();
System.exit(0);
}

});

4.加入TextField事件處理:

主要用到addActionListener();

5.加入ChatServer:

主要考察ServerSocket通信;

6.Client端連上服務器端:

在ChatClient中添加一個connect方法,並在launchFrame中調用;

7.客戶端給服務器端發消息:

想要發送消息,就要拿到這個Socket,將上面版本中作爲局部變量的Socket,轉變成成員變量;

在ChatServer中接受客戶端傳來的消息,並打印出來;

8.修正上個版本,使客戶端可以發送多個語句:

通過在ChatServer中定義兩個boolean類型的變量,來控制服務器的啓動  和  客戶端的連接;

9.修正一些bug;

10.連上多個客戶端:

首先,需要使用一個List的泛型集合來裝載各個連接的client;

此處ChatServer程序需要大幅修改,使用線程解決一個線程控制一個客戶端,因此在ChatServer程序中寫一個Client內部類,代表客戶端那邊在服務器這邊的包裝;

11.服務器轉發消息:

此處只需修改ChatServer,在內部類Client中寫一個send()方法往外寫,同時通過內部類Client中的run方法調用send方法;

12.客戶端接受消息

通過線程來接受消息;

13. 修改當關閉一個Client之後,再在其中某個Client中輸入時報錯:

原因是:在run方法中會調用c.send(str),不過在這是Client已經關閉,所以在向他發送,會報錯;

解決辦法是:在send方法中捕獲異常的時候去掉當前的client;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章