在IIS6.0扩展中接收客户端POST过来的数据遇到问题

哈利路亚1874 哈利路亚1874 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我写了一个IIS6.0的扩展,在HttpExtensionProc回调函数中循环接收数据,为什么只能接收到客户端第一次POST过来的数据,后面POST的数据就接收不到了,怎么样才能接收到所有的数据呢?从客户端到服务器始终保持连接。我的代码如下:

DWORD CIISExtendExtension::HttpExtensionProc(EXTENSION_CONTROL_BLOCK *pecb)
{
DebgPrint("Begin HttpExtensionProc!\n");
bExit = FALSE;

DWORD dwLen = 0;
BOOL retn = FALSE;
DWORD dwPostSize = 0;
DWORD dwThreadId = 0;
Thread_Param *param;
char *postDataBuffer = NULL;
HSE_EXEC_URL_INFO ExecUrlInfo = {0};
HSE_EXEC_URL_ENTITY_INFO *pEntity = NULL;

//获取URL
pecb->GetServerVariable(pecb->ConnID,"URL",0,&dwLen);

Url = new char[dwLen+1];
if (Url == NULL)
{
DebgPrint("Alloc Url buffer error!\n");
return HSE_STATUS_ERROR;
}
pecb->GetServerVariable(pecb->ConnID,"URL",Url,&dwLen);
DebgPrint(Url);

//首次Client连接过来,记录Client的IP和PORT
//通过特定URL数据进行比对确认Client
if (!stricmp(Url,"/index.html") && !stricmp(pecb->lpszMethod,"POST"))
{
//**************************************************************************************//
//这个指针没释放
param = new Thread_Param;
param->sClient = this->sClient;
param->pecb = pecb;
//创建线程,线程句柄没关闭
hTread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)FowardDataToClient,param,0,&dwThreadId);
if (hTread == NULL)
{
DebgPrint("Create thread error!\n");
return FALSE;
}
DebgPrint("Create thread success!\n");
//**************************************************************************************//
while (TRUE)
{
//获取传送的POST数据
if (pecb->cbTotalBytes > 0)
{
postDataBuffer = (char *)LocalAlloc(LPTR,pecb->cbTotalBytes);
if(postDataBuffer == NULL)
{
DebgPrint("LocalAlloc error!\n");
return HSE_STATUS_ERROR;
}
memcpy(postDataBuffer,pecb->lpbData,pecb->cbAvailable);
if (pecb->cbTotalBytes-pecb->cbAvailable > 0)
{
//读取剩余的数据
pecb->ReadClient(pecb->ConnID,(LPVOID)(postDataBuffer+pecb->cbAvailable),&dwPostSize);
DebgPrint(postDataBuffer);
}
}
Sleep(100);
DebgPrint(postDataBuffer);
//将接收的数据转发给3389服务端
if(send(sClient,postDataBuffer,pecb->cbTotalBytes,0) == SOCKET_ERROR)
{
int erroCode = WSAGetLastError();
DebgPrint("Send post data error!\n");
LocalFree(postDataBuffer);
return HSE_STATUS_ERROR;
}
ZeroMemory(postDataBuffer,pecb->cbTotalBytes);
}

LocalFree(postDataBuffer);
delete Url;
return HSE_STATUS_SUCCESS_AND_KEEP_CONN;
}

//如果不是客户端的数据,就正常返回请求的网页
else
{
ExecUrlInfo.dwExecUrlFlags = HSE_EXEC_URL_IGNORE_CURRENT_INTERCEPTOR;
retn = pecb->ServerSupportFunction(pecb->ConnID, HSE_REQ_IO_COMPLETION,HseIoCompletionProc, NULL, (LPDWORD)pEntity);
if (!retn)
{
DebgPrint("HSE_REQ_IO_COMPLETION support error!\n");
delete Url;
return HSE_STATUS_ERROR;
}
retn = pecb->ServerSupportFunction(pecb->ConnID, HSE_REQ_EXEC_URL, &ExecUrlInfo, NULL, NULL);
if (!retn)
{
DebgPrint("HSE_REQ_EXEC_URL support error!\n");
delete Url;
return HSE_STATUS_ERROR;
}

delete Url;
return HSE_STATUS_PENDING;
}

//处理结束 并保持连接
return HSE_STATUS_SUCCESS_AND_KEEP_CONN;
}

因为IIS开发不是太明白,求指点!
...全文

相关推荐

IIS 6.0详解与Web服务器配置实战

Internet信息服务(IIS)6.0是微软在2003年随Windows Server 2003操作系统推出的重要Web服务器组件,标志着IIS产品线的一次重大架构升级。相较于早期版本,IIS 6.0在稳定性、安全性和性能方面进行了深度优化,成为当时企业级Web服务部署的重要选择。其引入的“应用程序池”机制、增强的元数据库(Metabase)管理能力以及与Windows安全模型的深度集成,极大地提升了Web服务器的可维护性与扩展性。

亜恵恵阿由

15、利用 Microsoft Log Parser 监控 IIS 6.0

本文详细介绍了如何使用 Microsoft Log Parser 对 IIS 6.0 进行全面的日志监控与错误分析。涵盖了解析 FTP 日志、分析客户端与服务器端错误、识别 ASP 错误、监控 HTTPERR 和 URLSCAN 日志等内容,并提供了多个实用的 SQL 查询脚本,帮助用户深入理解服务器运行状态,及时发现潜在问题,确保 IIS 服务器的稳定性和安全性。

n7o8p

高校及科研院所如何利用外部数据完善技术转移转化机制.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

完全复现虚拟同步发电机VSG自适应惯量阻尼控制仿真、根轨迹、调节系数对比(Simulink仿真、Matlab代码实现)

内容概要:本文档围绕“【完全复现】虚拟同步发电机VSG自适应惯量阻尼控制仿真、根轨迹、调节系数对比”这一主题,利用Simulink和Matlab平台,系统性地实现了虚拟同步发电机(VSG)的自适应惯量与阻尼控制策略的建模与仿真。内容涵盖VSG的核心控制原理、系统动态响应特性分析、根轨迹绘制以及在不同调节系数下的性能对比研究,旨在深入剖析关键控制参数对系统稳定性与动态性能的影响机制,为新能源并网系统中提升频率支撑能力和暂态稳定性的控制策略设计提供理论依据和技术支持。; 适合人群:具备扎实的电力系统分析与自动控制理论基础,熟练掌握Matlab/Simulink仿真工具,主要从事新能源发电、微电网运行、电力电子变换器控制或电力系统稳定研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①开展虚拟同步发电机(VSG)的建模与先进控制策略的深入研究;②探究自适应惯量与阻尼控制对改善电网频率响应速度和平抑功率波动的作用机理;③运用根轨迹法进行系统稳定性分析,并指导控制器参数的优化整定;④完成高水平学术论文撰写或科研项目申报所需的仿真复现实验。; 阅读建议:本资源以“完全复现”为核心目标,提供了完整的仿真模型与配套代码。使用者应在深入理解同步发电机转子运动方程、虚拟惯量及阻尼物理意义的基础上,结合电力系统暂态稳定理论,逐步操作并调试仿真模型,尤其需关注不同调节系数变化对系统动态性能指标(如超调量、调节时间)的影响,从而深化对VSG内在控制机制与稳定边界的认知。

天天程序猿

员工满意度数据集(11列,12000 条记录)CSV 合成

详情介绍:该 HR 员工数据集含 12,000 条 ×11 列(满意度、绩效评估、项目数、月均工时、司龄、工伤、福利包、晋升、部门、薪资),无缺失值但无离职标签列,且存在数据质量问题(141 条负绩效评估、144 条负工时、49.4% 异常高工伤率、项目数仅 0/1/2),疑似经过修改或合成,不能直接做经典的员工离职预测,适合做满意度回归、薪资三分类、晋升预测或员工聚类分析,使用前必须清洗异常值并注意数据真实性限制。

神仙别闹
评论 3
收藏 已收藏
分享
返回顶部
哈利路亚1874
IIS 8,329 成员 16,634 内容