一、編寫server端
1public
class server implements
runnable catch
(ioexception e) 26}
2728
@override
29public
void
run()
51//
8 如果為可讀狀態
52if
(key.isreadable())
55//
9 寫資料
56if
(key.iswritable())
59//
key.isconnectable()60}
6162
}63 } catch
(ioexception e) 66}
67}6869
private
void
write(selectionkey key)
7374
private
void
read(selectionkey key)
88//
5 有資料則進行讀取 讀取之前需要進行復位方法(把position 和limit進行復位)
89this
.readbuf.flip();
90//
6 根據緩衝區的資料長度建立相應大小的byte陣列,接收緩衝區的資料
91byte bytes = new
byte[this
.readbuf.remaining()];
92//
7 接收緩衝區資料
93this
.readbuf.get(bytes);
94//
8 列印結果
95 string body = new
string(bytes).trim();
96 system.out.println("server : " +body);
9798
//9..可以寫回給客戶端資料
99 } catch
(ioexception e)
102103
}104
105private
void
accept(selectionkey key) catch
(ioexception e)
119}
120121
public
static
void
main(string args)
二、編寫client端
1public
static
void
main(string args)
32 } catch
(ioexception e) finally
catch
(ioexception e) 41}
42}4344 }
Nio基本使用
io分為兩類,一類是檔案io,另一類就是網路io。jdk1.4新增了了nio,以往的io讀寫都是阻塞式的,如果io流中沒有可讀寫的資料時,那麼程式就會阻塞,知道有資料可以讀寫,效率低下。nio就是為了改善這種情況推出的。nio有兩個關鍵物件,乙個是channel,另乙個是buffer,channel...
nio基本使用
nio速度的提高來自於所使用的結構更接近於作業系統執行i o的方式 通道和緩衝器。我們可以把它想象成乙個煤礦,通道是乙個包含煤層 資料 的礦藏,而緩衝器則是派送到礦藏的卡車。卡車載滿煤炭而歸,我們再從卡車上獲得煤炭。也就是說,我們並沒有直接和通道互動,我們只是和緩衝器互動,並且把緩衝器派送到通道。通...
NIO學習一 NIO簡介
最近在學習nio,根據學習總結了一下,如果有不對的地方,請大佬指出。nio,就是new io,從jdk 1.4開始引入的新的api,它跟io的作用相同。它與傳統的io相比,有如下特性 1 nio是面向緩衝區的,io是面向流的。2 io是阻塞的操作,如果乙個io的read或者write沒有得到資料的時...