Java實現(xiàn)Socket網(wǎng)絡(luò)編程(一)

筆者將通過一個簡單的案例,來為大家介紹如何通過Java來實現(xiàn)Socket網(wǎng)絡(luò)編程。通過本次案例,讀者能掌握Socket網(wǎng)絡(luò)編程的基本思路,并能解決在實際開發(fā)過程中遇到的問題。

首先展示案例的演示效果:
初始狀態(tài):假設(shè)有1個服務(wù)器,2個客戶端

服務(wù)器:

Paste_Image.png

如上圖所示,已連接服務(wù)器的客戶端數(shù)量為2,且客戶端在成功連接服務(wù)器后,會向服務(wù)器"say hello!"。

客戶端:

Paste_Image.png
Paste_Image.png

如上圖所示,在客戶端在成功連接服務(wù)器后,服務(wù)器會向客戶端"say hello!"。

若發(fā)送空消息,則收到提示

Paste_Image.png

單體發(fā)送演示(只向其中的一個客戶端發(fā)送消息)

Paste_Image.png

如上圖所示,選擇一個客戶端,發(fā)送消息

Paste_Image.png

如上圖所示,被選中的客戶端收到消息

Paste_Image.png

如上圖所示,未被選中的客戶端收不到消息

廣播發(fā)送演示

Paste_Image.png
Paste_Image.png
Paste_Image.png

當(dāng)選中所有客戶端時,即實現(xiàn)廣播功能

客戶端斷開演示

Paste_Image.png

服務(wù)器斷開演示

Paste_Image.png

當(dāng)客戶端斷開或服務(wù)器斷開時,對方均有響應(yīng)

由演示效果可知,我們本次案例的需求:
1、設(shè)計程序,分別構(gòu)建通信的兩端:服務(wù)器端和客戶端應(yīng)用程序,套接字類型為面向連接的Socket,自己構(gòu)建雙方的應(yīng)答模式,實現(xiàn)雙方的數(shù)據(jù)和接收(S發(fā)給C,C發(fā)送S)。
2、服務(wù)器程序能響應(yīng)單個或任意多個客戶端連接請求;服務(wù)器能向單個客戶發(fā)送消息,同時支持群發(fā)消息給所有客戶端。
3、通信的雙方具備異常響應(yīng)功能,包括對方異常退出的處理。如果客戶端退出,服務(wù)器有響應(yīng),反之亦然。

由此,我們應(yīng)有明確的設(shè)計思路:
1、服務(wù)器創(chuàng)建主監(jiān)聽線程,監(jiān)聽客戶端連接;若檢測到客戶端連接,服務(wù)器在主監(jiān)聽線程中另開一個子線程,用于接收客戶端的信息。
2、客戶端創(chuàng)建子線程,輪詢檢測服務(wù)器是否啟動,若已啟動,主動連接。
3、客戶端與服務(wù)器成功連接后,創(chuàng)建子線程,用于接收服務(wù)器信息。
4、雙方發(fā)生數(shù)據(jù)均不需要新建線程。

就設(shè)計思路,作以下解釋:
發(fā)送數(shù)據(jù)不需要新建線程,因為發(fā)送消息是一個主動的過程,不需要等待;而接收消息是一個被動的過程,因不知道對方會在何時發(fā)送消息,所以需要新建一個線程去等待接收。

下節(jié)內(nèi)容,筆者將通過代碼的形式,為大家做實現(xiàn)的介紹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 計算機網(wǎng)絡(luò)概述 網(wǎng)絡(luò)編程的實質(zhì)就是兩個(或多個)設(shè)備(例如計算機)之間的數(shù)據(jù)傳輸。 按照計算機網(wǎng)絡(luò)的定義,通過一定...
    蛋炒飯_By閱讀 1,366評論 0 10
  • 網(wǎng)絡(luò)編程 網(wǎng)絡(luò)編程對于很多的初學(xué)者來說,都是很向往的一種編程技能,但是很多的初學(xué)者卻因為很長一段時間無法進入網(wǎng)絡(luò)編...
    程序員歐陽閱讀 2,104評論 1 37
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong閱讀 22,940評論 1 92
  • 在北方的小村落里,有一位長相艷麗的女子,名叫穗,在村子的十里八鄉(xiāng)都算比較出名的,排隊上門提親的不在少數(shù)。 穗的家庭...
    一枚花農(nóng)閱讀 439評論 2 1

友情鏈接更多精彩內(nèi)容