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

基于.NET 的WebSocket 的简单实例 --- 数据格式

上一篇我们已经在服务器和客户端之间建立起一个能双向通讯的途径,如果你马上按以前的经验直接丢送数据,恭喜,数据能过去,可你却根本不认识,这是自然,他的地盘他要做主,websocket 有其自己约定的数据格式,我们必须按照这个格式来才行的。

协议这玩意,很是枯燥,只能用,不能创新,但多了解一些这种规则,对以后我们定义传输协议有很强的参考价值,所以我们还是得认真瞧瞧。

 
打开: http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-10
找到如下图所示的位置,这里面有详细的说明

 

具体每个字段的说明,大家可以慢慢啃英文,我们就讨论一下,如何将这玩意,在我们的系统中使用吧。

先用我的语言理解一下这个格式,有什么不正确欢迎大家指正。
这个格式中,最重要的就是第二个字节:

 

1.第一位决定是否有掩码,如果Mask为1,就会有后面那个4字节的Masking-Key,客户发送过来的数据,都有个这值,所以当我尝试发送一个空串过来的时候,服务器会收到类似如下的数据:(以2进制显示,方便大家了解)。

传输的数据,采用掩码的异或运算来产生,比如我发送一个字符1,服务器会收到如下数据:
1000 0001 1000 0001 0011 1100 1001 0111 0011 1001 1010 1111 0000 1101
如果Mask为0,则不会有后面的掩码

 

2.后7位是用来决定这个帧的长度,重点为原文中的这一句话:
Payload length:  7 bits, 7+16 bits, or 7+64 bits
如果这7位表示的长度小于126,则此即发送数据的实际长度
如果等于126,则后面两个字节表示长度,即7+16Bits的意思
如果等于127,则后面的8字节表示长度,即7+64Bits的意思
数据传输协议,就应该合理的使用每一个数据位,虽然感觉理解累些,但却能减少数据传输的数量,这就我们大设计协议的时候,应该好好学习的。

转载于:https://www.cnblogs.com/Charles-xu/p/4980935.html

相关文章:

  • c#进程间通信(Inter-Process Communication)
  • vim简单的文本编辑命令
  • 【BZOJ】2879: [Noi2012]美食节
  • gulp 教程
  • 虚拟化之vmx配置文件
  • 致北京
  • 二进制方式快速安装MySQL数据库
  • 沙盒 文件操作
  • PHP上传(单个)文件示例
  • UESTC 1246 拆x3
  • 积分显示算法(4.34.5 4.14 4.65)
  • linux中ssh免密码登录
  • postgresql cluster和correlation
  • 有限概率(拉普拉斯概率)
  • Android Stduio统计项目的代码行数
  • 【刷算法】从上往下打印二叉树
  • Android开源项目规范总结
  • ES6 ...操作符
  • input的行数自动增减
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java|序列化异常StreamCorruptedException的解决方法
  • Js基础知识(一) - 变量
  • js算法-归并排序(merge_sort)
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • mongodb--安装和初步使用教程
  • spring学习第二天
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • 从0实现一个tiny react(三)生命周期
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 学习笔记TF060:图像语音结合,看图说话
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • HanLP分词命名实体提取详解
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • #include
  • #pragma 指令
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)shell中括号的特殊用法 linux if多条件判断
  • . NET自动找可写目录
  • .gitignore
  • .Net mvc总结
  • .net 生成二级域名
  • .Net 应用中使用dot trace进行性能诊断
  • .net操作Excel出错解决
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET的微型Web框架 Nancy
  • .Net中wcf服务生成及调用
  • @Bean, @Component, @Configuration简析
  • [ SNOI 2013 ] Quare
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [BSGS算法]纯水斐波那契数列