使用NIO實現乙個echo伺服器

2021-08-20 07:05:04 字數 1404 閱讀 9571

乙個簡單的echo伺服器,客戶端向服務端傳送訊息,服務端進行響應,當客戶端傳送quit字串時,斷開客戶端和服務端的連線。使用nio實現

服務端**

public class echoserver_nio  catch (exception e) 

}public static void main(string args)

public void service()else if(key.isreadable())else if(key.iswritable())}}

selectionkeys.clear();

}} catch (exception e) }}

private void accept(selectionkey key)catch (exception e)

}private void read(selectionkey key)

recbuf.flip();

string rectext = new string(recbuf.array(),0,read);

system.out.println(rectext);

if (rectext.equals("quit"))

sc.register(selector,selectionkey.op_write);

}catch (exception e)

}private void write(selectionkey key) catch (exception e)

}}

客戶端**

public class echoclient_nio catch (exception e)

}public void service() throws ioexception else if (key.isreadable())else if (key.iswritable())

keys.clear();}}

}private void connect(selectionkey key)

} catch (ioexception e)

}private void read(selectionkey key)

sc.register(selector, selectionkey.op_write);

}}catch (exception e)

}private void write(selectionkey key)

sc.register(selector,selectionkey.op_read);

}catch (exception e)

}public static void main(string args) throws ioexception

}

nio不易使用,使用時需謹慎

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

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

乙個NIO例子

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

NIO簡單理解(一,NIO服務端簡單實現邏輯)

熟悉nio,首先要理解nio核心物件 serversocketchannel selector 是乙個多路開關選擇器,可以同時檢查 如果需要,也可以等待 一組通道的i o狀態,能夠管理多個通道上的i o操作。簡單nio服務端為例實現邏輯 建立selector 多路開關選擇器或者通道管理器 幹的事就是...