乙個簡單的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 多路開關選擇器或者通道管理器 幹的事就是...