当前位置: 首页 > news >正文

衡水市网站建设_网站建设公司_Figma_seo优化

开发网站公司都需要什么岗位人员,建设网站域名有了还要什么,怎么做淘宝客网站优化,语言教学网站建设课程总结处理消息边界 为什么要处理边界 因为会存在半包和粘包的问题 1.客户端和服务端约定一个固定长度 优点#xff1a;简单 缺点#xff1a;可能造成浪费 2.客户端与服务端约定一个固定分割符 *缺点 效率低 3.先发送长度#xff0c;再发送数据 TLV格式#xff1a; type…处理消息边界 为什么要处理边界 因为会存在半包和粘包的问题 1.客户端和服务端约定一个固定长度 优点简单 缺点可能造成浪费 2.客户端与服务端约定一个固定分割符 *缺点 效率低 3.先发送长度再发送数据 TLV格式 type类型length长度Value数据类型和长度已知的情况下就可以方便获取消息大小 http1.1是TLV格式 http2.0是LTV格式 4.自动扩容解决消息边界问题 第一次read事件未能读完全部的输入那么会产生第二个读事件那么在第一次读的时候进行扩容 并复制之前的内容至新的buffer中 在第二个读事件触发以后使用扩容后的buffer读取剩余的数据 buffer应当和各自的channel绑定如何绑定需要用到附件attachment attachment需要在注册时放到selectionKey中。 // 绑定附件 SelectionKey scKey channel.register(selector,0,byteBuffer);// 获取附件 scKey.attachment();// 指定新的附件覆盖附件 scKey.attach(bytebuffer);示例代码 package com.ysf;import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import java.nio.charset.Charset; import java.util.Iterator;public class BorderSelectorServer {/*** 读取到 \n时打印* param byteBuffer 缓冲字节*/public static void handle(ByteBuffer byteBuffer) {byteBuffer.flip();for (int i 0; i byteBuffer.limit(); i) {if (byteBuffer.get(i) \n) {int length i 1 - byteBuffer.position();ByteBuffer allocate ByteBuffer.allocate(length);for (int j0;jlength;j){allocate.put(byteBuffer.get());}allocate.flip();System.out.println(Charset.defaultCharset().decode(allocate));}}byteBuffer.compact();}public static void main(String[] args) throws IOException {// 声明一个选择器Selector selector Selector.open();// 声明一个serverServerSocketChannel ssc ServerSocketChannel.open();ssc.bind(new InetSocketAddress(11027));ssc.configureBlocking(false);// 注册这个server到selectorSelectionKey sscKey ssc.register(selector, 0, null);// 添加sscKey关心的事件因为是serverChannel,所以应当关心accept事件sscKey.interestOps(SelectionKey.OP_ACCEPT);while (true) {selector.select();IteratorSelectionKey iterator selector.selectedKeys().iterator();while (iterator.hasNext()) {SelectionKey key iterator.next();iterator.remove();if (key.isAcceptable()) {ServerSocketChannel serverChannel (ServerSocketChannel) key.channel();SocketChannel socketChannel serverChannel.accept();socketChannel.configureBlocking(false);// 声明一个buffer缓冲区和socketChannel绑定ByteBuffer byteBuffer ByteBuffer.allocate(16);SelectionKey scKey socketChannel.register(selector, 0, byteBuffer);scKey.interestOps(SelectionKey.OP_READ);} else if (key.isReadable()) {// 当客户端异常断开链接是需要处理IOExceptiontry {SocketChannel channel (SocketChannel) key.channel();ByteBuffer byteBuffer (ByteBuffer) key.attachment();int read channel.read(byteBuffer);if (read -1) {// 客户端close()了key.cancel();}else{// 调用处理逻辑handle(byteBuffer);if (byteBuffer.position() byteBuffer.limit()){// buffer满了需要扩容ByteBuffer bufferEx ByteBuffer.allocate(byteBuffer.capacity() * 2);byteBuffer.flip();bufferEx.put(byteBuffer);key.attach(bufferEx);}}}catch (IOException e){ // e.printStackTrace();key.cancel();}}}}} }
http://www.lebaoying.cn/news/46406.html

相关文章:

  • 下载黑龙江建设网官网网站邹城网站建设哪家便宜
  • WordPress全站跳转没有建网站怎样做网销
  • 石家庄网站制作报价互联网最吃香的职业
  • 长沙做网站公司有哪些直播间搭建
  • 我想做个门户网站怎么做做图书网站赚钱么
  • 做平台的网站有哪些内容自由贸易试验区网站建设方案
  • 保山公司做网站品牌做网站公司
  • app移动应用软件开发成都网站外包优化
  • 商城类网站建设 数据库广州网络营销推广
  • 学会了dw就可以做网站吗怎样做品牌推广
  • 商丘网站网站建设西凤酒网站建设
  • 手机网站开发方案私人网站建设成本
  • 运城做网站用eclipse做网站模板
  • 征婚网站咋做网站集约化建设 技术
  • 质感设计网站建立个人网站怎么赚钱
  • 怎么套模板做网站nginx反代wordpress伪静态
  • wordpress全站网易云音乐播放四川住房与城乡建设部网站
  • 常州企业建站系统模板开发公司竣工员工奖励计划
  • 深圳市专业的做网站兰溪网站
  • 网站备案域名更改公司做淘宝网站目的是什么
  • dw怎么做网站后台长沙网站推广 下拉通推广
  • 行业门户网站营销案例网站交换链接的常见形式
  • 菜鸟如何建网站西安建筑工程有限公司
  • 成品网站1688入门网行业协会网站建设方案
  • 宝安多屏网站建设公司好吗云主机 免费
  • 云主机建网站教程网站建设及托管合同
  • 红酒论坛网站建设施工企业的主要负责人是本单位的
  • 网页设计怎么分析网站啊学校网站建设宗旨
  • 租车网站建设系统的设计金阊企业建设网站公司
  • 阿里巴巴网站建设销售山东官方网站栖霞市观里镇少城镇建设规划