• 大小: 273KB
    文件类型: .7z
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: 其他
  • 标签: iocp  ado  udt  zlib  

资源简介

该版本为20150108最新版,修复了发现的多个BUG,并且添加了部分新特性(详见工程内的ReadMe)。资源分是为了大家能在下载后,给点评论,不管是好的还是坏的;建议或者是提交BUG都可以。 IOCP_API网络开发库的最新升级版测试程序(非源码);提供测试Demo和详尽的编码使用代码;可用于测试网络性能和评估IOCP_API开发库的功能;其中传统TCP和UDP服务器和客户端经过较为严格的测试,Channel相关的功能仅简单测试,没有严格测试;突出特点是包含了一个ADO连接池,通常服务程序都与数据库关联,包含此连接池的目的就是为了方便在编写服务程序的同时,不用过多的关心数据库连接相关的部分。

资源截图

代码片段和文件信息

// Demo.cpp : 定义应用程序的类行为。
//

#include “stdafx.h“
#include “Demo.h“
#include “DemoDlg.h“

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// 唯一的一个 CDemoApp 对象
CDemoApp theApp;

BOOL CDemoApp::InitInstance()
{
Startup();

// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControlsEx()。否则,将无法创建窗口。
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// 将它设置为包括所有要在应用程序中使用的
// 公共控件类。
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);

CWinApp::InitInstance();

if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}

// 标准初始化
// 如果未使用这些功能并希望减小
// 最终可执行文件的大小,则应移除下列
// 不需要的特定初始化例程
// 更改用于存储设置的注册表项
// TODO: 应适当修改该字符串,
// 例如修改为公司或组织名
SetRegistryKey(_T(“应用程序向导生成的本地应用程序“));

CDemoDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: 在此处放置处理何时用“确定”来关闭
//  对话框的代码
}
else if (nResponse == IDCANCEL)
{
// TODO: 在此放置处理何时用“取消”来关闭
//  对话框的代码
}

// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
//  而不是启动应用程序的消息泵。
return FALSE;
}
int CDemoApp::ExitInstance()
{
Cleanup();
return CWinApp::ExitInstance();
}

BOOL CDemoApp::Startup()
{
XUtil::UnhandledException(this);

Initialize(4 8 1000 10000);
return TRUE;
}
BOOL CDemoApp::Cleanup()
{
UnInitialize();
return TRUE;
}

// SEH处理
BOOL  CDemoApp::IsWriteDump(VOID)
{
return TRUE;
}
CHAR* CDemoApp::GetFileName(VOID)
{
static TCHAR szPath[MAX_PATH];

ZeroMemory(szPath sizeof(szPath));
GetModuleFileName(NULL szPath sizeof(szPath));
lstrcpy(szPath “.dmp“);

return szPath;
}
LONG  CDemoApp::OnDumpComplete(VOID)
{
return EXCEPTION_EXECUTE_HANDLER;
}


//数据库连接池测试
RetCode CDemoApp::TestDb(VOID)
{
//创建数据库连接池
ADOPool *pool = XUtil::CreatePool(1 2 “Provider=OraOLEDB.Oracle.1;Data Source=EQUANT;User ID=nyg;Password=nyg“);

//从池中获得一个数据库连接
ADOConnection *pConn = pool->CreateConn();
    
//获得记录集和命令对象
ADORecordset *rs = pConn->CreateRecordSet();
ADOCommand *cmd = pConn->CreateCommand();

//设置命令参数并执行命令
cmd->SetType(ADOCommand::typeCmdText);
cmd->SetText(“select currprice from nyg_rb1405_1min“);
rs->Execute(cmd);

//获得记录数
int count = rs->GetRecordCount();

//获取记录集
double price = 0;
rs->MoveFirst();
while(!rs->IsEOF())
{
rs->GetFieldValue(“currprice“ price);
rs->MoveNext();
}

//释放记录集对象和命令对象
pConn->ReleaseRecordSet(rs);
pConn->ReleaseCommand(cmd);

//回收数据库连接
pool->CloseConn(pConn);
//销毁连接池
XUtil::DestoryPool(pool);

return RET_ESUC;
}

RetCode CDemoApp::TestLogger(VOID)
{
// 创建日志对象
ILogger *pLogger = XUtil::CreateLogger(“C:\\Users\\Administrator\\Desktop\\IOCP_API(2.4)\\bin\\Debug\\log“);
// 设置日志级别
pLogger->SetLevel(LOG_ERROR);

int count  = 10000;
while (--count > 0)
{
// 写日志
pLogger->LogI(“count=%d\n“ count);
pLogger->LogW(“count=%d\n“ count);
pLogge

评论

共有 条评论