#include "fun_iocpsvr.h"
#include <stdio.h>
char *buffer = "HTTP/1.1 200 OK\r\nContent-Length: 5\r\nConnection: close\r\nContent-Type: text/html\r\n\r\nHello";
//高效稳定的完成端口动态库
//
//Powered by ChinaIM.net
//
//chinaim.net@gmail.com
//
//2009-6-19
Tfun_iocpsvr *fun_iocpsvr = NULL;
//-----------------------------------------------------------------
__stdcall Tfun_iocpsvr::Tfun_iocpsvr(char *ip,int port)
{
m_iocp_obj = NULL;
//------------------------------
dll_iocplib = new Tdll_iocplib();
#ifdef _DEBUG
dll_iocplib->load_dll_lib(L"iocplibd.dll");
#else
dll_iocplib->load_dll_lib(L"iocplib.dll");
#endif
//-----------------------------------------------
dll_iocplib->load_lib_function();
dll_iocplib->fun_create_iocplib(&m_iocp_obj);
m_iocp_obj->start_iocp(ip,port);
m_iocp_obj->set_fun_proc((IOCP_ACCEPT)iocp_accept,
(IOCP_RECV_MESSAGE)iocp_recv,
(IOCP_CLOSE)iocp_close,
(void*)this);
}
//-----------------------------------------------------------------
__stdcall Tfun_iocpsvr::~Tfun_iocpsvr()
{
if(m_iocp_obj)
{
m_iocp_obj->stop_iocp();
dll_iocplib->fun_delete_iocplib(&m_iocp_obj);
}
m_iocp_obj = NULL;
delete dll_iocplib;
dll_iocplib = NULL;
}
//-----------------------------------------------------------------
void __stdcall Tfun_iocpsvr::iocp_accept(tag_iocp_node *user_node,void *param)
{
Tfun_iocpsvr *m_this = (Tfun_iocpsvr*)param;
m_this->fun_accept(user_node);
}
//-----------------------------------------------------------------
void __stdcall Tfun_iocpsvr::iocp_recv(tag_iocp_node *user_node,void *param)
{
Tfun_iocpsvr *m_this = (Tfun_iocpsvr*)param;
m_this->fun_recv(user_node);
}
//-----------------------------------------------------------------
void __stdcall Tfun_iocpsvr::iocp_close(tag_iocp_node *user_node,int close_type,void *param)
{
Tfun_iocpsvr *m_this = (Tfun_iocpsvr*)param;
m_this->fun_close(user_node,close_type);
}
//-----------------------------------------------------------------
//-----------------------------------------------------------------
//-----------------------------------------------------------------
//-----------------------------------------------------------------
void __stdcall Tfun_iocpsvr::fun_accept(tag_iocp_node *user_node)
{
//连接到来时,同时也有消息需要提取,这是完成端口的与众不同之处之一
char *sock_buf = user_node->szBuffer;
int sock_len = user_node->szBuffer_len;
//处理实际的socket数据
printf("\n %s len: %d \n",sock_buf,sock_len);
m_iocp_obj->send_message(user_node,buffer,strlen(buffer));
static int i_connect_count = 0;
i_connect_count ++;
//---
printf("\n有连接来了: %lu \n",i_connect_count);
}
//-----------------------------------------------------------------
void __stdcall Tfun_iocpsvr::fun_recv(tag_iocp_node *user_node)
{
char *sock_buf = user_node->szBuffer;
int sock_len = user_node->szBuffer_len;
if(sock_len > 0)
{
//处理实际的socket数据
printf("\n %s \n",sock_buf);
m_iocp_obj->send_message(user_node,buffer,strlen(buffer));
}
}
//-----------------------------------------------------------------
void __stdcall Tfun_iocpsvr::fun_close(tag_iocp_node *user_node,int close_type)
{
//用户节点即将关闭之前发来的调用
static int i_deconnect_count = 0;
i_deconnect_count ++;
printf("\n有连接关闭: %lu : %d \n",i_deconnect_count, close_type);
}
高效稳定完成端口IOCP动态库VC6.0版
4星 · 超过85%的资源 需积分: 9 117 浏览量
2010-12-29
21:59:30
上传
评论
收藏 847KB RAR 举报
jimdoc
- 粉丝: 0
- 资源: 10
最新资源
- 老飞飞搭建基础通用数据库V19数据库.rar
- jquery.js
- 机械设计多工位ACF贴胶带&预压设备sw18可编辑非常好的设计图纸100%好用.zip
- 基于Pytorch复现Point-Transformer,用于ShapeNet数据集点云分割
- 【医学影像分析】2D超声图像的分割检测(Ultrasound Nerve Segmentation - Kaggle数据集)
- 嘎嘎香的五款神仙谷歌插件
- .arch书源导入教程.mp4
- 贪心算法介绍及代码示例讲解
- CR13SP35MSI64 Crystal 水晶报表运行组件最后版本64位
- 图像分类数据集:玉米叶是否感染分类数据集(2分类,包含训练集、验证集)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
- 4
- 5
- 6
前往页