• 大小: 15.02MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-06-20
  • 语言: C/C++
  • 标签: websocket  C++  Server  demo  

资源简介

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\Dataframe.cpp

     文件       1017  2016-05-22 16:34  websocketserver\Dataframe.h

     文件       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\Dataframe.obj

     文件          2  2016-05-22 18:03  websocketserver\Debug\link-cvtres.read.1.tlog

     文件          2  2016-05-22 18:03  websocketserver\Debug\link-cvtres.write.1.tlog

     文件          2  2016-05-22 18:03  websocketserver\Debug\link.8520-cvtres.read.1.tlog

     文件          2  2016-05-22 18:03  websocketserver\Debug\link.8520-cvtres.write.1.tlog

     文件          2  2016-05-22 18:03  websocketserver\Debug\link.8520.read.1.tlog

     文件          2  2016-05-22 18:03  websocketserver\Debug\link.8520.write.1.tlog

     文件       1494  2016-05-22 18:03  websocketserver\Debug\link.command.1.tlog

     文件       2578  2016-05-22 18:03  websocketserver\Debug\link.read.1.tlog

     文件        952  2016-05-22 18:03  websocketserver\Debug\link.write.1.tlog

     文件        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.embed.manifest

     文件        472  2016-05-22 18:03  websocketserver\Debug\WebSocketsServer.exe.embed.manifest.res

     文件        381  2016-05-22 18:03  websocketserver\Debug\WebSocketsServer.exe.intermediate.manifest

............此处省略38个文件信息

评论

共有 条评论