2016年6月29日 星期三

Java SocketServer的運用

最近實作簡單的SocketServer,可以互相多人通訊

先來講講 我實作的 Server Client 概念

我把SocketServer分為四個部分

第一部分initLayout(),我利用swing來繪製程式,主要是宣告一個panel,然後把繪圖元件都丟進去panel裡,再利用fame新增panel,在更新畫面(fame.ravalidate())

第二部分setIPAdrress(),利用InetAddress物件,把自身IP放入在LBIpAds.setText()。

第三部分initRequestListener(),把TFmsg TextField增加傾聽者(KeyListener),傾聽
TFmsgKeyListener物件,裡面主要功能是keyReleased(KeyEvent event),當按下按鈕放開時,會觸發這個功能。

第四部分是serverReceiver(),我宣告兩個變數ServerSocket和ExecutorService,ServerSocket放入自身接收Port,LISTEN_PORT=2525,而ExecutorService 則是接收當有ServerSocket回應(
serverSocket.accept)把 ServerReceiveThread( socket )放入threadExecutor(Thread Pool)


我們來講解一下ServerReceiveThread部分,這是當有Client回應時,Server會專門創立一個Thread給它,一直傾聽有沒有訊息回來。而ServerRequestThread部分,則是Server想要發送訊息,或者是當有Client傳訊息到Serever再轉發給其他Client時,會使用的物件。


再來是SocketClient部分,也分為四個部分
前兩個部分和Server一樣,
第三部分是initSocketClient(String host,int port)利用new Socket( host, port );連線遠端的Server給他一個Thread執行傾聽遠端Server的訊息這部分和Server一樣

而initRequestListener()部分,也是和Server一樣,傾聽鍵盤回應,然後發送給ClientRequestThread,讓他傳送到Server。

以下是程式碼,可以直接執行

沒有留言:

張貼留言