File tree 1 file changed +56
-0
lines changed
nio-netty/src/main/java/com/fantasybaby/l1
1 file changed +56
-0
lines changed Original file line number Diff line number Diff line change
1
+ Netty入门教程
2
+ 第一天内容 传统IO与NIO比较
3
+
4
+
5
+ 传送IO特点
6
+ 阻塞点
7
+ server.accept();
8
+ inputStream.read(bytes);
9
+
10
+ 单线程情况下只能有一个客户端
11
+
12
+
13
+ 用线程池可以有多个客户端连接,但是非常消耗性能
14
+
15
+
16
+ =======================分割线==========================
17
+
18
+ NIO的特点
19
+
20
+ ServerSocketChannel ServerSocket
21
+
22
+ SocketChannel Socket
23
+
24
+ Selector
25
+
26
+ SelectionKey
27
+
28
+ NIO的一些疑问
29
+
30
+ 1、客户端关闭的时候会抛出异常,死循环
31
+ 解决方案
32
+ int read = channel.read(buffer);
33
+ if(read > 0){
34
+ byte[] data = buffer.array();
35
+ String msg = new String(data).trim();
36
+ System.out.println("服务端收到信息:" + msg);
37
+
38
+ //回写数据
39
+ ByteBuffer outBuffer = ByteBuffer.wrap("好的".getBytes());
40
+ channel.write(outBuffer);// 将消息回送给客户端
41
+ }else{
42
+ System.out.println("客户端关闭");
43
+ key.cancel();
44
+ }
45
+
46
+ 2、selector.select();阻塞,那为什么说nio是非阻塞的IO?
47
+
48
+ selector.select()
49
+ selector.select(1000);不阻塞
50
+ selector.wakeup();也可以唤醒selector
51
+ selector.selectNow();也可以立马返还,视频里忘了讲了,哈,这里补上
52
+
53
+
54
+ 3、SelectionKey.OP_WRITE是代表什么意思
55
+
56
+ OP_WRITE表示底层缓冲区是否有空间,是则响应返还true
You can’t perform that action at this time.
0 commit comments