你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 网络与通信
基于Ajax技术Web实时监控系统(六)
 

完成端口线程处理完成后,使用函数PostQueuedCompletionStatus退出线程。可以用它发送一个自定义的包含了OVERLAPPED成员变量的结构地址,里面包含一个状态变量,当状态变量为退出标志时,线程就执行清除动作然后退出:

for(i=0; i<m_nThreadIo; i++){

PostQueuedCompletionStatus(m_hCompletionPort, 0, 0, NULL);}

(2) 解析请求

客户端浏览器通过HTTP协议发送请求。这里使用GET请求就可以完成命令的传输。GET请求是类似于“GET /view HTTP/1.1 Accept: image/gif…”的字符串。服务器端只需要解析GET后面的字符就能解析出不同的命令。采用如下代码实现:

string strUrlTemp;

string strUrlReal;

strUrlTemp=strUrl; // strUrl为客户请求字符串

//搜索GET后面标志符号”/

int k=strUrlTemp.rfind('/');

if(k>0){//下面根据不同请求,调用相应函数处理                      {

strUrlReal=strUrlTemp.substr(k+1,strUrlTemp.length()-k);                                                                         if(strUrlReal.compare("realdata.htm")==0){//是实时数据,则读取实时数据信息进行显示

if(strUrlReal.compare("realdata.htm")==0) HttpSendData(strUrlReal, bKeepAlive);

if(strUrlReal.compare("realdata1.htm")==0) HttpSendData1(strUrlReal, bKeepAlive);

//设置设备参数

if(strUrlReal.compare("setparam1.htm")==0)

      SetDevParam1(strUrlReal, bKeepAlive);

return;

}

(3) 数据发送

数据以HTTP协议发送到客户端。数据格式同客户端约定好,以减少网络数据量,高效率传输为原则。返回的数据包需要先设置HTTP协议头,然后加入回应内容。

客户端有缓存,会造成网页不刷新,不能获取到实时数据,解决方法有两个。将“Cache-Control”头设为“no-Cache”或者设置“Expires”为一个已经过去的时间,如Expires:Fri,15 Feb 1980 09:46:20 GMT。以下为写HTTP协议头代码。

sprintf(pResponseHeader, "HTTP/1.1 200 OK\r\nAccept-Ranges: bytes\r\nContent-Length: %d\r\nConnection: %s\r\nCache-Control: no-Cache\r\nContent-Type: text/html\r\n\r\n",pIoBuffer->GetLen(), bKeepAlive?"Keep-Alive":"close");

如果是汉字需要进行UTF-8编码,否则会出现乱码。对汉字进行字符集转换,需要遍历整个字符串。如果是英文直接复制,如果是汉字,则利用API函数MultiByteToWide函数进行Unicode转换,再由Unicode转换到UTF-8。本文设计了下面的函数,转换strText UTF-8编码:
  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089