资源简介
websocket C++ Server端简单demo,方便自己添加扩展
代码片段和文件信息
#include “Dataframe.h“
DataframeHeader::DataframeHeader(byte buffer[] int nBufLen)
{
if(nBufLen<2)
{
return;
//throw new Exception(“无效的数据头.“);
}
//第一个字节
_fin = (buffer[0] & 0x80) == 0x80;
_rsv1 = (buffer[0] & 0x40) == 0x40;
_rsv2 = (buffer[0] & 0x20) == 0x20;
_rsv3 = (buffer[0] & 0x10) == 0x10;
_opcode = (sbyte)(buffer[0] & 0x0f);
//第二个字节
_maskcode = (buffer[1] & 0x80) == 0x80;
_payloadlength = (sbyte)(buffer[1] & 0x7f);
}
//发送封装数据
DataframeHeader::DataframeHeader(bool finbool rsv1bool rsv2bool rsv3sbyte opcodebool hasmaskint length)
{
_fin = fin;
_rsv1 = rsv1;
_rsv2 = rsv2;
_rsv3 = rsv3;
_opcode = opcode;
//第二个字节
_maskcode = hasmask;
_payloadlength = (sbyte)length;
}
//返回帧头字节
byte* DataframeHeader::GetBytes()
{
byte* buffer = new byte[2];
memset(buffer 0 2);
if (_fin) buffer[0] ^= 0x80;
if (_rsv1) buffer[0] ^= 0x40;
if (_rsv2) buffer[0] ^= 0x20;
if (_rsv3) buffer[0] ^= 0x10;
buffer[0] ^= (byte)_opcode;
if (_maskcode) buffer[1] ^= 0x80;
buffer[1] ^= (byte)_payloadlength;
return buffer;
}
//Dataframe::Dataframe(byte* buffer int nBufLen)
//{
// _extend = new byte[0];
// _mask = new byte[0];
// _content = new byte[0];
// //帧头
// _header = DataframeHeader(buffer nBufLen);
//
// //扩展长度
// if (nBufLen == 126)
// {
// _extend = new byte[2];
// Buffer.BlockCopy(buffer 2 _extend 0 2);
// }
// else if (nBufLen == 127)
// {
// _extend = new byte[8];
// Buffer.BlockCopy(buffer 2 _extend 0 8);
// }
//
// //是否有掩码
// if (_header.HasMask)
// {
// _mask = new byte[4];
// Buffer.BlockCopy(buffer _extend.Length + 2 _mask 0 4);
// }
//
// //消息体
// if (_extend.Length == 0)
// {
// _content = new byte[_header.Length];
// Buffer.BlockCopy(buffer _extend.Length + _mask.Length + 2 _content 0 _content.Length);
// }
// else if (_extend.Length == 2)
// {
// int contentLength = (int)_extend[0] * 256 + (int)_extend[1];
// _content = new byte[contentLength];
// Buffer.BlockCopy(buffer _extend.Length + _mask.Length + 2 _content 0 contentLength > 1024 * 100 ? 1024 * 100 : contentLength);
// }
// else
// {
// long len = 0;
// int n = 1;
// for (int i = 7; i >= 0; i--)
// {
// len += (int)_extend[i] * n;
// n *= 256;
// }
// _content = new byte[len];
// Buffer.BlockCopy(buffer _extend.Length + _mask.Length + 2 _content 0 _content.Length);
// }
//
// if (_header.HasMask) _content = Mask(_content _mask);
//
//}
Dataframe::Dataframe(char* content int nContentSize)
{
_mask = new byte[0];
nMaskLen = 0;
_content = content;
int length = nContentSize;
nConte
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4521 2016-05-22 17:22 websocketserver\Datafr
文件 1017 2016-05-22 16:34 websocketserver\Datafr
文件 1794 2016-05-22 18:03 websocketserver\Debug\cl.command.1.tlog
文件 39136 2016-05-22 18:03 websocketserver\Debug\CL.read.1.tlog
文件 1116 2016-05-22 18:03 websocketserver\Debug\CL.write.1.tlog
文件 34773 2016-05-22 18:03 websocketserver\Debug\Datafr
文件 2 2016-05-22 18:03 websocketserver\Debug\li
文件 2 2016-05-22 18:03 websocketserver\Debug\li
文件 2 2016-05-22 18:03 websocketserver\Debug\li
文件 2 2016-05-22 18:03 websocketserver\Debug\li
文件 2 2016-05-22 18:03 websocketserver\Debug\li
文件 2 2016-05-22 18:03 websocketserver\Debug\li
文件 1494 2016-05-22 18:03 websocketserver\Debug\li
文件 2578 2016-05-22 18:03 websocketserver\Debug\li
文件 952 2016-05-22 18:03 websocketserver\Debug\li
文件 414 2016-05-22 18:03 websocketserver\Debug\mt.command.1.tlog
文件 162 2016-05-22 18:03 websocketserver\Debug\mt.read.1.tlog
文件 306 2016-05-22 18:03 websocketserver\Debug\mt.write.1.tlog
文件 570 2016-05-22 18:03 websocketserver\Debug\rc.command.1.tlog
文件 278 2016-05-22 18:03 websocketserver\Debug\rc.read.1.tlog
文件 286 2016-05-22 18:03 websocketserver\Debug\rc.write.1.tlog
文件 87465 2016-05-22 18:03 websocketserver\Debug\SHA1.obj
文件 551936 2016-05-22 18:03 websocketserver\Debug\vc100.idb
文件 380928 2016-05-22 18:03 websocketserver\Debug\vc100.pdb
文件 923345 2016-05-22 18:03 websocketserver\Debug\websocketServer.obj
文件 1779 2016-05-22 18:03 websocketserver\Debug\WebSocketsServer.Build.CppClean.log
文件 238080 2016-05-22 18:03 websocketserver\Debug\WebSocketsServer.exe
文件 406 2016-05-22 18:03 websocketserver\Debug\WebSocketsServer.exe.em
文件 472 2016-05-22 18:03 websocketserver\Debug\WebSocketsServer.exe.em
文件 381 2016-05-22 18:03 websocketserver\Debug\WebSocketsServer.exe.intermediate.manifest
............此处省略38个文件信息
- 上一篇:基于MFC的FTP客户端
- 下一篇:Visual C++网络编程案例实战.pdf
相关资源
- Visual C++网络编程案例实战.pdf
- VC++实现在线实时音频通信
- VC6.0直接可执行源码(音乐播放器,记
- c++11正式文档
- c++实现阿里云服务器管理 跨平台源码
- Data Structures and Program Design In C++及课后
- vs2008(mfc)通过ADO连接SQL SERVER 2008
- C++标准库——自学教程与参考手册(
- PatchMatch图像修复算法opencv和C++版)
- c++程序设计谭浩强课后习题答案(完
- c++自适应哈夫曼编码
- C++下使用OpenCV实现人脸检测
- C++/OpenCV2.4.xx印刷数字精确识别源码
- 用C++模拟集中式密钥分配的过程
- KinectV2 实现鼠标控制VS2013 C++版
- 基于MFC编程的冒泡排序动态演示
- 基于MFC的画直线,矩形,椭圆改变线
- 操作系统进程调度先来先服务、短进
- 精通Visual C++图像处理编程(第二版)
- 解析IP数据包 小程序C++实现
- Carve CSG 几何造型库
- C++ 连连看146451
- 数据结构用面向对象方法和C++描述 殷
- 基于C++的三维模型体素化程序
- wincap c++ mfc 网络截包 多线程
- KCF跟踪算法(C++)146187
- C++程序设计(谭浩强)146060
- c++图像处理编程
- Effective C++
- Visual C++程序设计与应用教程第二版案
评论
共有 条评论