Netty的深入浅出--32.NIO实现简单网络聊天程序(下)
接上一个程序:Netty的深入浅出--32.NIO实现简单网络聊天程序(上)
编写由服务端收到客户端发送过来的请求然后,又分发给其他已经连接好的客户端上面
遍历获取发送客户端的 UUID的值:
将请求信息发送给其他客户端:
启动服务器,启动客户端:
客户端:
创建客户端NioClient
和服务端差不多,不过客户端是通过socketchannel调用open()方法建立连接:
通过selector 调用open()方法;
将socketChannel注册到selector中,这里要注意的是SelectionKey的连接key是OP_CONNECT,判断是否已经建立连接。
建立连接:
select()方法是阻塞式的
判断是否连接上
通过selectionKey.channel()获取socketChannel
这里关于为什么强制转换成socketchannel,之前已经讲过了哦。
判断连接是否正处于一个正在进行的状态:
是否是正在连接,是的话,就完成连接过程:
连接成功之后,向服务端发送的请求信息:
将数据写出去:
完成输入,建立一个单例的线程池:
将键盘输入的数据发送给服务端:
注册一个读事件:
进行读取:
将从服务端获取到的字节数组打印出来:
清空处理完之后的keySet
启动服务端,两个客户端:
通过nc发送: