#include "StdAfx.h"
#include "EventService.h"
#include "SocketEngine.h"
//////////////////////////////////////////////////////////////////////////
//宏定义
#define TIME_BREAK_READY 9000L //中断时间
#define TIME_BREAK_CONNECT 4000L //中断时间
#define TIME_DETECT_SOCKET 20000L //监测时间
//////////////////////////////////////////////////////////////////////////
//动作定义
#define QUEUE_SEND_REQUEST 1 //发送标识
#define QUEUE_SAFE_CLOSE 2 //安全关闭
#define QUEUE_ALLOW_BATCH 3 //允许群发
#define QUEUE_DETECT_SOCKET 4 //检测连接
//发送请求结构
struct tagSendDataRequest
{
WORD wMainCmdID; //主命令码
WORD wSubCmdID; //子命令码
WORD wIndex; //连接索引
WORD wRountID; //循环索引
WORD wDataSize; //数据大小
BYTE cbSendBuf[SOCKET_PACKET]; //发送缓冲
};
//设置群发
struct tagAllowBatchSend
{
WORD wIndex; //连接索引
WORD wRountID; //循环索引
BYTE cbAllow; //允许标志
};
//安全关闭
struct tagSafeCloseSocket
{
WORD wIndex; //连接索引
WORD wRountID; //循环索引
};
//////////////////////////////////////////////////////////////////////////
/*
//发送字节映射表
const BYTE g_SendByteMap[256]=
{
0x70,0x2F,0x40,0x5F,0x44,0x8E,0x6E,0x45,0x7E,0xAB,0x2C,0x1F,0xB4,0xAC,0x9D,0x91,
0x0D,0x36,0x9B,0x0B,0xD4,0xC4,0x39,0x74,0xBF,0x23,0x16,0x14,0x06,0xEB,0x04,0x3E,
0x12,0x5C,0x8B,0xBC,0x61,0x63,0xF6,0xA5,0xE1,0x65,0xD8,0xF5,0x5A,0x07,0xF0,0x13,
0xF2,0x20,0x6B,0x4A,0x24,0x59,0x89,0x64,0xD7,0x42,0x6A,0x5E,0x3D,0x0A,0x77,0xE0,
0x80,0x27,0xB8,0xC5,0x8C,0x0E,0xFA,0x8A,0xD5,0x29,0x56,0x57,0x6C,0x53,0x67,0x41,
0xE8,0x00,0x1A,0xCE,0x86,0x83,0xB0,0x22,0x28,0x4D,0x3F,0x26,0x46,0x4F,0x6F,0x2B,
0x72,0x3A,0xF1,0x8D,0x97,0x95,0x49,0x84,0xE5,0xE3,0x79,0x8F,0x51,0x10,0xA8,0x82,
0xC6,0xDD,0xFF,0xFC,0xE4,0xCF,0xB3,0x09,0x5D,0xEA,0x9C,0x34,0xF9,0x17,0x9F,0xDA,
0x87,0xF8,0x15,0x05,0x3C,0xD3,0xA4,0x85,0x2E,0xFB,0xEE,0x47,0x3B,0xEF,0x37,0x7F,
0x93,0xAF,0x69,0x0C,0x71,0x31,0xDE,0x21,0x75,0xA0,0xAA,0xBA,0x7C,0x38,0x02,0xB7,
0x81,0x01,0xFD,0xE7,0x1D,0xCC,0xCD,0xBD,0x1B,0x7A,0x2A,0xAD,0x66,0xBE,0x55,0x33,
0x03,0xDB,0x88,0xB2,0x1E,0x4E,0xB9,0xE6,0xC2,0xF7,0xCB,0x7D,0xC9,0x62,0xC3,0xA6,
0xDC,0xA7,0x50,0xB5,0x4B,0x94,0xC0,0x92,0x4C,0x11,0x5B,0x78,0xD9,0xB1,0xED,0x19,
0xE9,0xA1,0x1C,0xB6,0x32,0x99,0xA3,0x76,0x9E,0x7B,0x6D,0x9A,0x30,0xD6,0xA9,0x25,
0xC7,0xAE,0x96,0x35,0xD0,0xBB,0xD2,0xC8,0xA2,0x08,0xF3,0xD1,0x73,0xF4,0x48,0x2D,
0x90,0xCA,0xE2,0x58,0xC1,0x18,0x52,0xFE,0xDF,0x68,0x98,0x54,0xEC,0x60,0x43,0x0F
};
//接收字节映射表
const BYTE g_RecvByteMap[256]=
{
0x51,0xA1,0x9E,0xB0,0x1E,0x83,0x1C,0x2D,0xE9,0x77,0x3D,0x13,0x93,0x10,0x45,0xFF,
0x6D,0xC9,0x20,0x2F,0x1B,0x82,0x1A,0x7D,0xF5,0xCF,0x52,0xA8,0xD2,0xA4,0xB4,0x0B,
0x31,0x97,0x57,0x19,0x34,0xDF,0x5B,0x41,0x58,0x49,0xAA,0x5F,0x0A,0xEF,0x88,0x01,
0xDC,0x95,0xD4,0xAF,0x7B,0xE3,0x11,0x8E,0x9D,0x16,0x61,0x8C,0x84,0x3C,0x1F,0x5A,
0x02,0x4F,0x39,0xFE,0x04,0x07,0x5C,0x8B,0xEE,0x66,0x33,0xC4,0xC8,0x59,0xB5,0x5D,
0xC2,0x6C,0xF6,0x4D,0xFB,0xAE,0x4A,0x4B,0xF3,0x35,0x2C,0xCA,0x21,0x78,0x3B,0x03,
0xFD,0x24,0xBD,0x25,0x37,0x29,0xAC,0x4E,0xF9,0x92,0x3A,0x32,0x4C,0xDA,0x06,0x5E,
0x00,0x94,0x60,0xEC,0x17,0x98,0xD7,0x3E,0xCB,0x6A,0xA9,0xD9,0x9C,0xBB,0x08,0x8F,
0x40,0xA0,0x6F,0x55,0x67,0x87,0x54,0x80,0xB2,0x36,0x47,0x22,0x44,0x63,0x05,0x6B,
0xF0,0x0F,0xC7,0x90,0xC5,0x65,0xE2,0x64,0xFA,0xD5,0xDB,0x12,0x7A,0x0E,0xD8,0x7E,
0x99,0xD1,0xE8,0xD6,0x86,0x27,0xBF,0xC1,0x6E,0xDE,0x9A,0x09,0x0D,0xAB,0xE1,0x91,
0x56,0xCD,0xB3,0x76,0x0C,0xC3,0xD3,0x9F,0x42,0xB6,0x9B,0xE5,0x23,0xA7,0xAD,0x18,
0xC6,0xF4,0xB8,0xBE,0x15,0x43,0x70,0xE0,0xE7,0xBC,0xF1,0xBA,0xA5,0xA6,0x53,0x75,
0xE4,0xEB,0xE6,0x85,0x14,0x48,0xDD,0x38,0x2A,0xCC,0x7F,0xB1,0xC0,0x71,0x96,0xF8,
0x3F,0x28,0xF2,0x69,0x74,0x68,0xB7,0xA3,0x50,0xD0,0x79,0x1D,0xFC,0xCE,0x8A,0x8D,
0x2E,0x62,0x30,0xEA,0xED,0x2B,0x26,0xB9,0x81,0x7C,0x46,0x89,0x73,0xA2,0xF7,0x72
};
//数据加密密钥
const static DWORD g_dwPacketKey=0xA5BAA55A;
*/
//////////////////////////////////////////////////////////////////////////
//构造函数
COverLapped::COverLapped(enOperationType OperationType) : m_OperationType(OperationType)
{
memset(&m_WSABuffer,0,sizeof(m_WSABuffer));
memset(&m_OverLapped,0,sizeof(m_OverLapped));
}
//析构函数
COverLapped::~COverLapped()
{
}
//////////////////////////////////////////////////////////////////////////
//构造函数
COverLappedSend::COverLappedSend() : COverLapped(OperationType_Send)
{
m_WSABuffer.len=0;
m_WSABuffer.buf=(char *)m_cbBuffer;
}
//析构函数
COverLappedSend::~COverLappedSend()
{
}
//////////////////////////////////////////////////////////////////////////
//构造函数
CServerSocketItem::CServerSocketItem(WORD wIndex, IServerSocketItemSink * pIServerSocketItemSink)
: m_wIndex(wIndex), m_pIServerSocketItemSink(pIServerSocketItemSink)
{
m_wRountID=0;
m_wRecvSize=0;
m_cbSendRound=0;
m_cbRecvRound=0;
m_bNotify=true;
m_bRecvIng=false;
m_bCloseIng=false;
m_bAllowBatch=false;
m_dwSendXorKey=0;
m_dwRecvXorKey=0;
m_dwClientAddr=0;
m_dwConnectTime=0;
m_dwSendTickCount=0;
m_dwRecvTickCount=0;
m_dwSendPacketCount=0;
m_dwRecvPacketCount=0;
m_hSocket=INVALID_SOCKET;
}
//析够函数
CServerSocketItem::~CServerSocketItem(void)
{
//删除空闲重叠 IO
INT_PTR iCount=m_OverLappedSendFree.GetCount();
for (INT_PTR i=0;i<iCount;i++) delete m_OverLappedSendFree[i];
m_OverLappedSendFree.RemoveAll();
//删除活动重叠 IO
iCount=m_OverLappedSendActive.GetCount();
for (INT_PTR i=0;i<iCount;i++) delete m_OverLappedSendActive[i];
m_OverLappedSendActive.RemoveAll();
return;
}
//随机映射
WORD CServerSocketItem::SeedRandMap(WORD wSeed)
{
DWORD dwHold=wSeed;
return (WORD)((dwHold=dwHold*241103L+2533101L)>>16);
}
//映射发送数据
BYTE CServerSocketItem::MapSendByte(BYTE const cbData)
{
BYTE cbMap=g_SendByteMap[(BYTE)(cbData+m_cbSendRound)];
m_cbSendRound+=3;
return cbMap;
}
//映射接收数据
BYTE CServerSocketItem::MapRecvByte(BYTE const cbData)
{
BYTE cbMap=g_RecvByteMap[cbData]-m_cbRecvRound;
m_cbRecvRound+=3;
return cbMap;
}
//获取发送结构
COverLappedSend * CServerSocketItem::GetSendOverLapped()
{
//寻找空闲结构
COverLappedSend * pOverLappedSend=NULL;
INT_PTR nFreeCount=m_OverLappedSendFree.GetCount();
if (nFreeCount>0)
{
pOverLappedSend=m_OverLappedSendFree[nFreeCount-1];
ASSERT(pOverLappedSend!=NULL);
m_OverLappedSendFree.RemoveAt(nFreeCount-1);
m_OverLappedSendActive.Add(pOverLappedSend);
return pOverLappedSend;
}
//新建发送结构
try
{
pOverLappedSend=new COverLappedSend;
ASSERT(pOverLappedSend!=NULL);
m_OverLappedSendActive.Add(pOverLappedSend);
return pOverLappedSend;
}
catch (...) { }
return NULL;
}
//绑定对象
DWORD CServerSocketItem::Attach(SOCKET hSocket, DWORD dwClientAddr)
{
//效验数据
ASSERT(dwClientAddr!=0);
ASSERT(m_bRecvIng==false);
ASSERT(IsValidSocket()==false);
ASSERT(hSocket!=INVALID_SOCKET);
//设置变量
m_bNotify=false;
m_bRecvIng=false;
m_bCloseIng=false;
m_hSocket=hSocket;
m_dwClientAddr=dwClientAddr;
m_dwRecvTickCount=GetTickCount();
m_dwConnectTime=(DWORD)time(NULL);
//发送通知
m_pIServerSocketItemSink->OnSocketAcceptEvent(this);
return GetIdentifierID();
}
//发送函数
bool CServerSocketItem::SendData(WORD wMainCmdID, WORD wSubCmdID, WORD wRountID)
{
//效验状态
if (m_bCloseIng==true) return false;
if (m_wRountID!=wRountID) return false;
if (m_dwRecvPacketCount==0) return false;
if (IsValidSocket()==false) return false;
//寻找发送结构
COverLappedSend * pOverLappedSend=GetSendOverLapped();
ASSERT(pOverLappedSend!=NULL);
if (pOverLappedSend==NULL) return false;
//构造数据
CMD_Head * pHead=(CMD_Head *)pOverLappedSend->m_cbBuffer;
pHead->CommandInfo.wMai
没有合适的资源?快使用搜索试试~ 我知道了~
网狐内核6.6 的 测试可以用
共64个文件
h:16个
cpp:10个
obj:10个
4星 · 超过85%的资源 需积分: 9 56 下载量 116 浏览量
2011-08-09
19:35:01
上传
评论
收藏 4.52MB RAR 举报
温馨提示
网狐内核6.6 的 测试可以用 网狐内核6.6 的 测试可以用
资源推荐
资源详情
资源评论
收起资源包目录
6.6内核引擎.rar (64个子文件)
6.6内核引擎
KernelEngine.def 112B
ComKernel.suo 13KB
Stdafx.cpp 143B
TraceService.h 3KB
DataBaseEngine.cpp 20KB
SocketEngine.cpp 41KB
ServerKernel.rc 3KB
MSADO15.dll 584KB
ServiceEngine.h 3KB
DataBaseEngine.h 6KB
QueueService.h 2KB
KernelEngine.aps 33KB
KernelEngine.h 20KB
ZipD.dll 260KB
AsynchronismEngine.cpp 8KB
QueueService.cpp 5KB
SocketEngine.h 11KB
ServiceEngine.cpp 6KB
AsynchronismEngine.h 3KB
KernelEngine.suo 20KB
EventService.h 2KB
KernelEngineHelper.h 5KB
AttemperEngine.cpp 6KB
KernelEngineHead.h 23KB
KernelEngine.cpp 973B
EventService.cpp 5KB
AttemperEngine.h 2KB
Resource.h 369B
KernelEngine.sln 2KB
Release
EventService.obj 202KB
vc70.idb 467KB
KernelEngine.res 824B
vc70.pdb 692KB
QueueService.obj 210KB
DataBaseEngine.obj 409KB
BuildLog.htm 4KB
TimerEngine.obj 231KB
Stdafx.obj 209KB
AsynchronismEngine.obj 237KB
msado15.tlh 98KB
SocketEngine.obj 329KB
msado15.tli 74KB
KernelEngine.obj 176KB
AttemperEngine.obj 192KB
ServiceEngine.obj 200KB
KernelEngine.pch 10.13MB
内核引擎.pdb 2.69MB
KernelEngine.vcproj.WANDDY.wanddy.user 1KB
内核引擎.rar 7KB
KernelEngineD.def 114B
zip.dll 84KB
KernelEngine.ncb 587KB
Res
ServerKernel.rc2 379B
KernelEngine.rc2 379B
KernelEngine.vcproj 6KB
DataBaseAide.h 4KB
ZipD.lib 6KB
TimerEngine.cpp 8KB
TimerEngine.h 3KB
KernelEngine.rc 3KB
zip.lib 6KB
Stdafx.h 2KB
QueueServiceEvent.h 5KB
vssver2.scc 895B
共 64 条
- 1
lovewuxin
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 调显著性代码.do
- 66297787762147sf22346mod.apk
- tubiao.cpython-311.pyc
- 文一-2405072034.awb
- 海能达TD360写频软件
- iscreenlocker5.2.2-release.apk
- tensorflow-gpu-2.2.3-cp37-cp37m-win-amd64.whl
- 基础运维技能(下)md格式笔记
- tensorflow-rocm-2.13.0.570-cp39-cp39-manylinux2014-x86-64.whl
- tensorflow-rocm-2.13.0.570-cp38-cp38-manylinux2014-x86-64.whl
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页