publicclassNServer{//用于检测所有Channel状态的SelectorprivateSelectorselector=null;staticfinalintPORT=30000;privateCharsetcharset=Charset.forName("UTF-8");publicvoidinit(...

public class NServer

{

// 用于检测所有Channel状态的Selector

private Selector selector = null;

static final int PORT = 30000;

private Charset charset = Charset.forName("UTF-8");

public void init()throws IOException

{

selector = Selector.open();

// 通过open方法来打开一个未绑定的ServerSocketChannel实例

ServerSocketChannel server = ServerSocketChannel.open();

InetSocketAddress isa = new InetSocketAddress("127.0.0.1", PORT);

server.bind(isa);

// 设置ServerSocket以非阻塞方式工作

server.configureBlocking(false);

// 将server注册到指定Selector对象

server.register(selector, SelectionKey.OP_ACCEPT);

while (selector.select() > 0)

{

for (SelectionKey sk : selector.selectedKeys())

{

// 从selector上的已选择Key集中删除正在处理的SelectionKey

selector.selectedKeys().remove(sk); //①

// 如果sk对应的Channel包含客户端的连接请求

if (sk.isAcceptable()) //②

{

// 调用accept方法接受连接,产生服务器端的SocketChannel

SocketChannel sc = server.accept();

// 设置采用非阻塞模式

sc.configureBlocking(false);

// 将该SocketChannel也注册到selector

sc.register(selector, SelectionKey.OP_READ);

// 将sk对应的Channel设置成准备接受其他请求

sk.interestOps(SelectionKey.OP_ACCEPT);

}

if (sk.isReadable()) //③

{

// 获取该SelectionKey对应的Channel,该Channel中有可读的数据

SocketChannel sc = (SocketChannel)sk.channel();

// 定义准备执行读取数据的ByteBuffer

ByteBuffer buff = ByteBuffer.allocate(1024);

String content = "";

// 开始读取数据

try

{

while(sc.read(buff) > 0)

{

buff.flip();

content += charset.decode(buff);

}

System.out.println("读取的数据:" + content);

sk.interestOps(SelectionKey.OP_READ);

}

展开

flip java_java的flip(). 这里用flip()有什么作用?这是反转缓冲区的方法,好像用不上。...相关推荐

  1. leetcode 293.Flip Game(lintcode 914) 、294.Flip Game II(lintcode 913)

    914. Flip Game https://www.cnblogs.com/grandyang/p/5224896.html 从前到后遍历,遇到连续两个'+',就将两个加号变成'-'组成新的字符串加 ...

  2. 点号java_java的classpath路径中加点号 ‘.’ 的作用

    "."表示当前目录,就是编译或者执行程序时你所在的目录下的.class文件:而JAvA_HOME表示JDK安装路径 该路径在eclipse中是以vmarg的形式传入的,可以在任务管 ...

  3. 通过transpose和flip实现图像旋转90/180/270度

    在fbc_cv库中,提供了对图像进行任意角度旋转的函数rotate,其实内部也是调用了仿射变换函数warpAffine.如果图像仅是进行90度倍数的旋转,是没有必要用warpAffine函数的.这里通 ...

  4. python openCV 实现镜像翻转flip()

    python openCV 实现镜像翻转flip() 文章目录: 一.基本认知 二.代码实现 一.基本认知 图像的几何变换是指在不改变图像像素值的前提下对图像像素进行空间几何变换. 常见的几何变换有: ...

  5. java.nio.ByteBuffer中flip、rewind、clear方法的区别

    对缓冲区的读写操作首先要知道缓冲区的下限.上限和当前位置.下面这些变量的值对Buffer类中的某些操作有着至关重要的作用: limit:所有对Buffer读写操作都会以limit变量的值作为上限. p ...

  6. [转] java.nio.ByteBuffer中flip、rewind、clear方法的区别

    转载 对缓冲区的读写操作首先要知道缓冲区的下限.上限和当前位置.下面这些变量的值对Buffer类中的某些操作有着至关重要的作用: limit:所有对Buffer读写操作都会以limit变量的值作为上限 ...

  7. 【OpenCV 例程200篇】29. 图像的翻转(cv2.flip)

    [OpenCV 例程200篇]29. 图像的翻转(cv2.flip) 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 ...

  8. NIO-java.nio.ByteBuffer中flip、rewind、clear方法的区别

    原文链接     作者:Jakob Jenkov     译者:airu     校对:丁一 Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到 ...

  9. vivo X Flip会是高端手机市场的又一折叠屏爆款吗?

    据多个平台消息,vivo即将推出小折叠屏手机X Flip.据了解,vivo X Flip将采用轻盈便携的竖向折叠布局,以及非常受女性消费者喜爱的结构设计.那么,vivo X Flip会是vivo折叠屏 ...

最新文章

  1. 如何在网站上同步查看BCH数据
  2. 计算机文化基础4作业,计算机文化基础试题4
  3. supermap iobect .net 7.1.2 图例的拆分
  4. 11.QT事件机制源码时序分析(下)
  5. sublime部署开发环境
  6. 浙大 中科大 计算机专业,计算机专业领域的十大牛校,性价比最高的这所往往不为人们所知!...
  7. JavaScript-概述
  8. 基于Java+SpringBoot+vue+element实现火车订票平台管理系统
  9. java 求向量的均值,标准数组——向量
  10. 微信缓存dat怎么转图片_图片怎么转PDF?这个方法完美解决!
  11. android语音识别 android.speech 包分析
  12. delphi如何获得select得到的信息_如何建立闭环的笔记体系
  13. Apache Ranger KMS 部署文档
  14. Ubuntu永久修改IP、临时修改IP
  15. 服务器维护封号,LOL客服的关于他们自己服务器问题导致账号被封号的问题
  16. GCC自带的一些builtin内建函数
  17. PhotoSweeper X for Mac(重复照片快速清理软件)
  18. html5加载vr视频格式,VR视频格式是什么_VR视频有什么格式_怎么分辨VR视频格式-VR之家...
  19. Discarding record on action DISCARD on error 1403
  20. Markdown支持的emoji图标

热门文章

  1. Codeforces Round #645 (Div. 2)(AB)
  2. 阿里妈妈技术团队5篇论文入选 SIGIR 2022!
  3. mysql suoyin 和锁_Mysql索引与锁
  4. python读文件en_python 点云las、laz文件的读取、写入、压缩
  5. vim 命令_Vim 操作命令手册
  6. win10一直正在检查更新_教你win10升级更新失败怎么办
  7. 数学--数论--HDU 12151七夕节
  8. 数据结构--线性表顺序存储(顺序表)
  9. [机器学习]总结特征工程干货
  10. 【Error-Android Studio】clang++: error: no such file or directory