使用NIO實現乙個群組聊天功能

2021-10-24 08:10:03 字數 951 閱讀 2836

nio:(no blocking io或者new io),非阻塞io,是相對於傳統io來說,其意義在於網路io的非阻塞性。

其工作流程:

buffer :資料的載體

channel:客戶端到服務端的通道,負責資料(buffer)的傳輸

selector:多路復用器,用於監聽channel的事件(可對應多個channel)

使用nio模擬一套客戶端->服務端的群組聊天功能,具體實現:

1.server端

public

static

void

chatserver()

throws ioexception

//如果當前選擇鍵事件為read,說明客戶端有資料可以讀取

if(selectionkey.

isreadable()

)}buffer.

clear()

;}}//已經處理過的選擇鍵要及時移除,否則會導致多次重複處理導致異常

selectionkeys.

remove

(selectionkey);}

}}

2.client端

public

static

void

chatclient()

throws ioexception

catch

(ioexception e)

if(read >0)

}}})

.start()

;while

(true

)else

}}

使用NIO實現多人聊天

基於nio實現多人模擬聊天視窗,首先要了解,nio元件,serversocketchannel socketchannel selector selectorkey。了解了他們各自作用以及關係,多人聊天系統很容易理解實現,這裡不在介紹,自行了解 初始化服務端servesocketchannel 連線...

使用NIO實現乙個echo伺服器

乙個簡單的echo伺服器,客戶端向服務端傳送訊息,服務端進行響應,當客戶端傳送quit字串時,斷開客戶端和服務端的連線。使用nio實現 服務端 public class echoserver nio catch exception e public static void main string a...

乙個NIO例子

例子完成的功能是,客戶端傳送命令time到服務端,服務端返回當前時間給客戶端。服務端邏輯 public class multiplexertimeserverhandler implements runnable catch ioexception e public void stop public...