第一章Netty,selector消息边界问题

📅 2026/6/30 20:20:52
第一章Netty,selector消息边界问题
基于前文对 NIO Selector 读事件处理、compact() 缓冲区管理及粘包/拆包逻辑的讨论,‌消息边界问题‌(即 TCP 粘包与拆包)是 NIO 开发中最核心的挑战。由于 TCP 是‌流式协议‌,没有消息边界,一次 read() 可能读到半条消息、一条完整消息或多条消息。首先:我们来看一短消息边界代码问题publicstaticvoidmain(String[]args)throwsIOException{Selectorselector=Selector.open();ServerSocketChannelssc=ServerSocketChannel.open();ssc.bind(newInetSocketAddress(8080));ssc.configureBlocking(false);// 注册selector,建立和channel的联系,通过它可以知道事件和哪个channel的事件SelectionKeysscKey=ssc.register(selector,0,null);// selectKey只关注accept事件sscKey.interestOps(SelectionKey.OP_ACCEPT);log.info("sscKey:{}",sscKey);while(true){// 没有事件发生,该方法阻塞selector.select();SetSelectionKeyselectionKeys=selector.selectedKeys(