websocket 传输数据帧打包 (client端)
/*
Vertion: 0.2.1
date: 2015.8.11
content: gcc 编译通过
*/ //websocket 传输数据帧打包 client端
//参数:src 为输入字符串
// len为输入字串src长度
// mask为4个字节掩码值
// des 为输出掩码后字节数组。
// sum 为输出des实际长度 (len+6: len<=125
// len+8: 125<len<=65535
// len+10: len>65535
// 0: 组帧失败)
void maskpak(unsigned char src[],
unsigned int len,
unsigned char mask[],
unsigned char des[],
unsigned int *sum)
{
unsigned char FIN =0X80;
unsigned char RSV1 =0X00;
unsigned char RSV2 =0X00;
unsigned char RSV3 =0X00;
unsigned char OPCODE =0X01; //文本帧
unsigned char MASK =0X80; //掩码标识
unsigned char PLEN =0X00; int index=;
int i; des[index++]= FIN +RSV1 +RSV2 +RSV3 +OPCODE; if(len<=)
{
PLEN =len;
}else if(len<=0XFFFF)
{
PLEN =;
}else
{
PLEN =;
}
des[index++]= MASK +PLEN; //网络字节序标准为: 大端方式(即高字节在前低字节在后)
if(PLEN<=)
{
*sum= len+;
}
else if(==PLEN)
{
unsigned short temp;
temp =len;
des[index++] =(unsigned char)(temp>>);
des[index++] =(unsigned char)temp;
*sum= len+;
}else if(==PLEN)
{
unsigned int temp;
temp =len;
des[index++] =(unsigned char)(temp>>);
des[index++] =(unsigned char)(temp>>);
des[index++] =(unsigned char)(temp>>);
des[index++] =(unsigned char)temp;
*sum=len+;
}else
{
*sum= ;
return;
} for(i=;i<;i++)
{
des[index++] =mask[i];
} for(i=;i<len;i++)
{
des[index++] =src[i]^mask[i%];
}
} // 测试代码
int main(int argc,char *argv)
{
unsigned char src[];
unsigned char mask[]= {0X00,0X00,0X00,0X00};
unsigned char des[+];
unsigned int len = ;
unsigned int sum; int i; for (i=;i<;i++)
{
src[i] = i;
}
maskpak(src,len,mask,des,&sum); printf("SUM=%d \r\n",sum);
for(i=;i<sum;i++)
{
printf("%.2X ",(unsigned char)(des[i]));
} return ;
}
websocket 传输数据帧打包 (client端)的更多相关文章
- 利用WebSocket传输数组或者Blob的方案
最近在利用Html5的WebSocket进行即时通讯,一点小心得,大家一起讨论吧 首先把WebSocket的协议网址和WebSocket API网址给大家: 协议:http://tools.ietf. ...
- UDP也需要现有Server端,然后再有Client端
UDP编程: DatagramSocket(邮递员):对应数据报的Socket概念,不需要创建两个socket,不可使用输入输出流. DatagramPacket(信件):数据包,是UDP下进行传输数 ...
- Linux下的C Socket编程 -- 简介与client端的处理
Linux下的C Socket编程(一) 介绍 Socket是进程间通信的方式之一,是进程间的通信.这里说的进程并不一定是在同一台机器上也有可能是通过网络连接的不同机器上.只要他们之间建立起了sock ...
- Python自动化之rabbitmq rpc client端代码分析(原创)
RPC调用client端解析 import pika import uuid # 建立连接 class FibonacciRpcClient(object): def __init__(self): ...
- 用C#基于WCF创建TCP的Service供Client端调用
本文将详细讲解用C#基于WCF创建TCP的Service供Client端调用的详细过程 1):首先创建一个Windows Service的工程 2):生成的代码工程结构如下所示 3):我们将Servi ...
- 从零开始学习Node.js例子四 多页面实现数学运算 续二(client端和server端)
1.server端 支持数学运算的服务器,服务器的返回结果用json对象表示. math-server.js //通过监听3000端口使其作为Math Wizard的后台程序 var math = r ...
- Zookeeper全解析——Client端(转)
Zookeeper的Client直接与用户打交道,是我们使用Zookeeper的interface.了解ZK Client的结构和工作原理有利于我们合理的使用ZK,并能在使用中更早的发现问题.本文将在 ...
- JDE报表开发笔记(Client端导出Excel乱码)
之前导出Excel时没发生任何问题, Client端PL/SQL字符集为UTF-8 Oracle JDE E910字符集为UTF-8 解决方式:添加指定用户的字符集(上图即为修改后的用户字符集) 角色 ...
- JS读取client端的文件的代码片段
JS读取client端的文件内容的代码片段 if(window.FileReader){ var html5file = this.pipeDetailFileUpLoader._files[0]; ...
随机推荐
- 20191127 Spring Boot官方文档学习(4.25)
4.25. Testing Spring Boot提供了许多实用程序和注解,可以在测试应用程序时提供帮助.测试支持由两个模块提供:spring-boot-test包含核心项,spring-boot-t ...
- 基于 Timer是一种定时器工具
没有依赖 通过Timer中的schedule方法启动定时任务 一般不采用此方法 /** * ------------------------------------------------------ ...
- win10安装mysql时报错[MY-012576] [InnoDB] Unable to create temporary file; errno: 2
报错信息 解决: 在my.ini文件里面的 [mysqld]区段内加入: #自己指定的临时文件目录 tmpdir="临时目录" 添加好后初始化成功 接下来启动mysql服务的时候报 ...
- Luogu P1084 [NOIP2012]疫情控制
题目 首先我们二分一下答案. 然后我们用倍增让军队往上跳,最多先跳到根的子节点. 如果当前军队可以到达根节点,那么记录一下它的编号和它到达根节点后还可以走的时间. 并且我们记录根节点的叶子节点上到根节 ...
- faker数据填充详解
安装 在laravel中已经自动集成,无需手动安装.如需在其他地方使用,可使用以下命令进行安装. composer require fzaninotto/faker 为Faker指定中文支持 可通过在 ...
- if练习
练习: 1.简述变量命名规范 1.变量名由字母.下划线.数字组成 2.变量名不能以数字开头 3.变量不能使用python中的关键字 4.变量不能使用中文和拼音 5.区分大小写 6.变量名要具有描述性 ...
- jQuery之链式编程
使用的思想:隐式迭代. <button>快速</button> <button>快速</button> <button>快速</but ...
- 第7天:Django模板使用与表单
模板的配置 作为web框架,Django提供了模板,用于编写html代码,模板的设计实现了业务逻辑view与现实内容template的解耦.模板包含两部分: 静态部分: 包含html.css.js 动 ...
- TCP即时小通信
package 第十二章; import java.io.*; import java.net.*; public class TcpServer { public static void main( ...
- 更改导航栏的背景和文字Color
更改导航栏的背景和文字Color方法一: [objc] view plaincopy//set NavigationBar 背景颜色&title 颜色 [self.navigationCon ...