資源簡介
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
評論
共有 條評論