寫在前面:

  昨天在博客記錄自己抽空寫的一個Socket聊天程序的初始設(shè)計,那是這個程序的整體設(shè)計,為了完整性,今天把服務(wù)端的設(shè)計細化記錄一下,首頁貼出Socket聊天程序的服務(wù)端大體設(shè)計圖,如下圖:

Android培訓(xùn),安卓培訓(xùn),手機開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

功能說明:

  服務(wù)端主要有兩個操作,一是阻塞接收客戶端的socket并做響應(yīng)處理,二是檢測客戶端的心跳,如果客戶端一段時間內(nèi)沒有發(fā)送心跳則移除該客戶端,由Server創(chuàng)建ServerSocket,然后啟動兩個線程池去處理這兩件事(newFixedThreadPool,newScheduledThreadPool),對應(yīng)的處理類分別是SocketDispatcher、SocketSchedule,其中SocketDispatcher根據(jù)socket不同的請求分發(fā)給不同SocketHandler去處理,而SocketWrapper則是對socket加了一層外殼包裝,用lastAliveTime記錄socket最新的交互時間,SocketHolder存儲當前跟服務(wù)端交互的socket集合。

具體實現(xiàn):

  [Server.java]

Server是服務(wù)端的入口,由Server的start()方法啟動ServerSocket,然后阻塞接收客戶端的請求,交由SocketDispatcher去分發(fā),SocketDispatcher由newFixedThread類型的線程池啟動,當連接數(shù)超過最大數(shù)據(jù)時將被隊列處理,使用scheduleAtFixedRate啟動SocketSchedule定時循環(huán)去監(jiān)聽客戶端的心跳包,這兩個類型都實現(xiàn)了Runnable接口,下面給出服務(wù)端的代碼:

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式