资源简介
我们的一个项目的服务器端通信层,IOCP类是在此基础上写的,使用了近半年,并发量不大,1k上下,(不过曾做过压力测试,10k的并发量没有问题)还算比较稳定,基本上满足需求。

代码片段和文件信息
////////////////////////////////////////////////////////////////////////////////////////////////////
// Module Name:
// IOCPNetTest.cpp
// Author:
// Chun-Hyok Chong.
// Description:
// IOCPNet test code.
////////////////////////////////////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “workframe.h“
#include “WorkframeReturnCode.h“
#include
#include
#include
#include
#include
#include
#include
#include “IOCPNet.h“
#define TEST_IP “127.0.0.1“ // change it!
#define TEST_PORT 20000
#define TEST_LOG_PATH “c:\\\\testlog\\log.txt“
#define WAIT_TIMEOUT_TEST 100
DWORD WINAPI LogicThread(void *pParam);
void MainLogic(OIOCPNet *pIOCPNet DWORD SocketUnique OBufferedSocket *pBuffSock BYTE *pReadData DWORD ReadSize);
DWORD g_dRunning;
int _tmain(int argc _TCHAR* argv[])
{
OErrLog EL;
OIOCPNet *pIOCPNet;
int key;
WSADATA WSAData;
HANDLE hThread;
WSAStartup(MAKEWORD(22) &WSAData);
EL.SetErrLogFile(TEST_LOG_PATH);
pIOCPNet = new OIOCPNet(&EL);
pIOCPNet->Start(TEST_IP TEST_PORT);
InterlockedExchange((long *)&g_dRunning 1);
hThread = CreateThread(0 0 LogicThread pIOCPNet 0 0);
if (0 == hThread)
{
printf(“CreateThread is failed. Error code = %d\n“ GetLastError());
goto ErrHand;
}
printf(“Server: Press any key to stop...\n“);
key = getch();
InterlockedExchange((long *)&g_dRunning 0);
WaitForSingleobject(hThread INFINITE);
ErrHand:
pIOCPNet->Stop();
delete pIOCPNet;
WSACleanup();
return 0;
} // _tmain()
DWORD WINAPI LogicThread(void *pParam)
{
int iRes;
OIOCPNet *pIOCPNet;
int EventType;
DWORD SocketUnique;
BYTE *pReadData;
DWORD ReadSize;
OBufferedSocket *pBuffSock;
OReadSlotElement *pSlot;
void *pCustData; // for formatting. no custom data is used in this test.
pIOCPNet = (OIOCPNet *)pParam;
while (1 == InterlockedExchange((long *)&g_dRunning g_dRunning))
{
iRes = pIOCPNet->GetSocketEventData(WAIT_TIMEOUT_TEST &EventType &SocketUnique &pReadData &ReadSize &pBuffSock &pSlot &pCustData);
if (RET_TIMEOUT == iRes)
{
continue;
}
else if (RET_FAIL == iRes)
{
return 0;
}
else if (RET_SOCKET_CLOSED == iRes)
{
// release pCustData.
continue;
}
// Process main logic.
MainLogic(pIOCPNet SocketUnique pBuffSock pReadData ReadSize);
pIOCPNet->ReleaseSocketEvent(pSlot);
}
return 0;
} // LogicThread()
void MainLogic(OIOCPNet *pIOCPNet DWORD SocketUnique OBufferedSocket *pBuffSock BYTE *pReadData DWORD ReadSize)
{
//printf(“pReadData = %s\n“ pReadData);
pIOCPNet->WriteData(SocketUnique pBuffSock pReadData ReadSize); // echo.
return;
} // MainLogic()
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2877 2005-10-28 11:33 IOCPNetTest\IOCPNetTest\IOCPNetTest.cpp
文件 21 2005-08-24 22:46 IOCPNetTest\IOCPNetTest\stdafx.cpp
文件 101 2005-08-24 22:45 IOCPNetTest\IOCPNetTest\stdafx.h
文件 3856 2005-08-29 10:53 NetTestClient\NetTestClient\NetTestClient.cpp
文件 21 2005-08-24 22:48 NetTestClient\NetTestClient\stdafx.cpp
文件 153 2005-08-24 22:49 NetTestClient\NetTestClient\stdafx.h
文件 8038 2005-08-01 10:32 workfr
文件 1046 2005-07-27 17:00 workfr
文件 38280 2006-01-17 22:07 workfr
文件 8688 2006-01-17 22:06 workfr
文件 11298 2005-08-24 22:45 workfr
文件 6080 2005-09-10 02:59 workfr
文件 1443 2005-08-13 09:40 workfr
文件 1061 2005-08-01 10:32 workfr
文件 700 2005-07-27 17:00 workfr
文件 1227 2005-08-01 10:32 workfr
文件 903 2005-07-30 02:48 workfr
文件 2914 2005-08-29 10:43 workfr
文件 1397 2005-08-13 09:41 workfr
文件 9926 2005-08-24 22:49 workfr
文件 764 2005-08-24 22:49 workfr
文件 175 2005-08-23 14:10 workfr
文件 1230 2005-08-24 22:45 workfr
- 上一篇:基于单片机的水箱控制系统
- 下一篇:项目经理文档
相关资源
- IOCP 类 简单的IOCP(IO完成端口)服务
- 代码客:G-TcpServer(IOCP) 1.0 正式版及
- IOCP 一款远控的delphi源代码
- G-Sockets 2.5
- 基于IOCP的简单HTTP,与通用服务开发框
- DELPHI版IOCP完整源码及
- IOCP服务器
- iocp_file文件传输
- iocp服务器代码_tct&udp;测试工具
- IOCP学习客户端代码
- 功能强大的IOCP Socket Servre模块例程源
- openssl 结合 IOCP的
- IOCPExample_By_PiggyXP 完成端口
- IOCP 客户端和服务端
- 实现了IOCP完成端口模型的服务器设计
- IOCP_API(2.4)
- IOCP_API最新版(2008/11/15)
- 可以承载20k并发量的IOCP
- 博客文章《完成端口详解》配套代码
- IOCP服务器、客户端终极网络聊天室代
- 基于IOCP的文件传输
- IOCP作为服务器实现P2P_UDP通信
- 使用完成端口实现IOCP服务器端框架,
- IOCP游戏服务器(含压力测试)
- 经过封装的IOCP完成端口模型客户端
- 高性能的socket通讯服务器完成端口模
- dzdiocp(地质灾害的iocp控件)
- e语言-TCP服务器完整源码(基于IOCP实
- 易语言Iocp测试源码
- 高效率IOCP的UDP通信服务端
评论
共有 条评论