1. 程式人生 > >通訊基礎篇小專案-----多人聊天QQ的實現

通訊基礎篇小專案-----多人聊天QQ的實現


        自然界的通訊種類是多種多樣的,我們在每一天都會遇到各種各樣的通訊問題。然而通訊的實質是什麼,其實就是一種協議而已,僅此。就拿語言文字來說吧,每個國家制定不同的語言用來實現交流,這就是一種最基礎的通訊,每個文字代表的是一種不同的內容,這是人和人之間事先定好的協議,所以說,只要協議一旦確定,通訊就不是什麼大問題了。

       學習java通訊的核心是建立伺服器,客戶端連線伺服器,客戶端與伺服器的資訊交換。建立伺服器只需要一行程式碼就足夠了Socketserver server=new Socket(port)(其中port為伺服器得埠號),建立伺服器後,伺服器需要進入等待狀態,一旦有客戶端連線上來就會主動把埠給予客戶端,客戶端與伺服器可以是就連線在一起。就可以等待訊息的傳送了。當然這個過程也只需要一行程式碼,Socket  client=server.accept();. 最後就是客戶機連線伺服器了,連線伺服器也只需要一行程式碼Socket client=new Socket("ip"  , port)(就是需要獲得伺服器的ip地址和埠號)。這樣一個簡單的伺服器和埠就連線好了。

       下面是根據這個原理寫的一個簡單多人聊天室。

        首先是UML圖:首先我們得定義六個類,

                           

        


 

 

 

  這樣,一個簡單的多人聊天室就構架好了,下面是實現的過程,首先是啟動介面類,客戶端的介面類會彈出如下視窗。

 輸入埠號就可以建立伺服器,一個簡單的伺服器就這樣建立了,當然,由於客戶端的程式碼在設定的時候沒有設定傳IP地址,所以這裡預設的埠只能是6666.這會在以後得以解決。

    啟動客戶端介面如下



 點選連線伺服器後就可以連線到伺服器中。對話開始。當然這裡我們多建立幾個客戶端開始聊天。




 

 
 
開始聊天、

 

 這樣一個簡單的聊天是就實現了。再來溫習一下:

首先是是伺服器建立,並且讓伺服器處於等待狀態

	public void setupServer(){										try{
					
	ServerSocket so=new ServerSocket(port);
      System.out.println("建立伺服器成功了,port: "+port);
	while(true){
	 client =so.accept();
 System.out.println("有人來連結了"+client.getRemoteSocketAddress().toString());
	//啟動一個伺服器的執行緒去處理這個連上來的客戶端
	ServerThread st=new ServerThread(client,jtereceive);
		st.start();
	   ChatList. ThreadAdd(st); }
	}catch(Exception e){
	e.printStackTrace();
	}
}

 客戶端來連線伺服器

Socket socket=new Socket(this.IP,this.port);

 讀取訊息的時候為了不阻塞其他執行緒的進行,所以讀取執行緒的方法要單獨的在一個執行緒。