今天在極客學院上看到了一個關于Socket的視訊講解,感覺還不錯,就寫了份代碼,拿來分享一下。
關于Socket的使用,我們首先要弄清楚的是,在伺服器端還是在用戶端使用。因為這的确是很重要的。
對于用戶端,需要使用<code>new Socket(ip,port)</code>就可以了。
對于伺服器端的話,我們需要借助于ServerSocket 的accept方法獲得與特定的用戶端相關聯的Socket執行個體。
然後通信的雙方借助于socket裡面的方法,獲得輸出流和輸入流完成相關的通信的邏輯處理就可以了
首先先展示一下我的目錄結構吧。
每個類的實作的功能就是:
ChatManager:添加socket到隊列;發送資料
ChatSocket: 實作了單獨的線程的通信處理
MainTest: 本類的測試入口
ServerListener: 伺服器端的偵聽類,負責擷取連接配接成功的用戶端
然後是具體的代碼。
個人建議代碼的閱讀順序為:MainTest.java–>ServerListener.java–>ChatSocket.java–> ChatManager.java
這裡使用到的是XUbuntu終端telnet方式
這個小程式的核心的思想就在于使用線程來進行用戶端的資訊的處理。
再來回顧一下整個伺服器端的原理和流程吧。
*-* 1首先建立出一個ServerSocket對象來偵聽來自于用戶端的連結
*-* 2将連結到的用戶端對應的Socket添加到一個隊列中(這裡使用了一個單獨的類ChatManager進行了實作),并開啟這個新的線程進行處通信
*-* 3使用相關的輸入流,輸出流進行資料的互動
*-* 4使用終端的telnet的方式實作了伺服器端的測試,對于從事背景開發的很友善哦。