使用NIO實現多人聊天

2021-10-24 21:21:53 字數 1493 閱讀 1526

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

初始化服務端servesocketchannel 連線,繫結埠,並註冊到selector

通過selectors 監聽註冊通道事件,根據事件進行使用者上線、下線、訊息讀取、**處理

public

class

chatserver

/** * 接受/**客戶端訊息

*/public

void

receiveclientinfo()

throws exception

socketchannel socketchannel = null;

try}

}catch

(ioexception e)

//刪除處理過的key

iterators.

remove()

;}}}

}/**

* **訊息到其他客戶端

** @param msg

* @param selfchannel

*/private

void

trancemessage2otherclient

(string msg, socketchannel selfchannel)

throws exception }}

}

客戶端初始化,並註冊到selecotrs 上

傳送訊息到伺服器

通過selectors 監聽通道讀事件,讀取訊息

public

class

chatclient

/** * 傳送訊息

** @param msg

*/public

void

sendmsg

(string msg)

catch

(ioexception e)

}/**

* 接受訊息

*/public

void

receivemsg()

} iterator.

remove()

;}}catch

(ioexception e)

}}

nio 多人聊天實現,主要依靠nioseletors實現,selectors接受服務於客戶端註冊,並監聽每個通道的事件,一旦有事件發生,即可進行處理。註冊的事件即(channel) 都會生成相應selectkey, 通過selectkey可以發現獲取,有事件發生的通道。

NIO實現網路聊天室

public class tcpnioclient 5.準備乙個資料存入到緩衝區 bytebuffer buffer bytebuffer.wrap 你好,伺服器 getbytes 6.通過socketchannel 符合tcp協議socket要求channel物件傳送 socket.write b...

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

nio no blocking io或者new io 非阻塞io,是相對於傳統io來說,其意義在於網路io的非阻塞性。其工作流程 buffer 資料的載體 channel 客戶端到服務端的通道,負責資料 buffer 的傳輸 selector 多路復用器,用於監聽channel的事件 可對應多個ch...

socket多人聊天

ide vs2019 client連線server client發訊息給server server 給其他的client 主要用select wrap.h pragma once include includeusing namespace std void init wsa 檢查socket版本 ...