⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bcjq063.txt

📁 c++ builder 的一些txt文档
💻 TXT
📖 第 1 页 / 共 2 页
字号:

C++ Builder开发者:程序员之家
var how_many_ads = 3;
var now = new Date()
var sec = now.getSeconds()
var ad = sec % how_many_ads;
ad +=1;
 
  
  
    
      
        
          
            首页   
              | 控件天堂 | 控件使用                    
              | 编程技巧                     
              |  源代码 |  编程工具 |         
               系统补丁 |  电子书籍 | 技术论坛                     
              |  相关链接                  
                            
                          
                        
                      
                      
                        
                          
                            
                              
                            
                  
       if (ad==1) {document.write(''+'');}                
       if (ad==2) {document.write(''+'');}                
       if (ad==3) {document.write(''+'');}                
                               
                            
                         
                                     
                         
                       
                     
                   
                   
                     
                       
                         
                           
                        
                      
var marqueecontents=''+scroll_text+''            
if (document.all)            
document.write(''+marqueecontents+'')            
function regenerate(){            
window.location.reload()            
}            
function regenerate2(){            
if (document.layers){            
setTimeout("window.onresize=regenerate",450)            
intializemarquee()            
}            
}            
function intializemarquee(){            
document.cmarquee01.document.cmarquee02.document.write(marqueecontents)            
document.cmarquee01.document.cmarquee02.document.close()            
thelength=document.cmarquee01.document.cmarquee02.document.height            
scrollit()            
}            
function scrollit(){            
if (document.cmarquee01.document.cmarquee02.top>=thelength*(-1)){            
document.cmarquee01.document.cmarquee02.top-=speed            
setTimeout("scrollit()",100)            
}            
else{            
document.cmarquee01.document.cmarquee02.top=marqueeheight            
scrollit()            
}            
}            
window.onload=regenerate2            
                        
                          
                        
                      
                    
                  
                  
                    
                      
                        
                          
                            
                              
                                
                  当前位置
     
     
                    编程技巧             
                             
                           
                         
                         
                         
                           
                             
                               
                     
 
      用C++Builder开发ISAPI扩展应用程序          
                            
                      
                        
                          
                            
                          一、ISAPI概述 Microsoft的WEB服务器提供了不同的ISAPI,应用ISAPI能够开发出高性能的应用程序。 
      
ISAPI具有两类组件:ISAPI扩展和ISAPI过滤器,本文着重介绍ISAPI扩展的应用和开发。 
      
ISAPI应用程序通过DLL实现,DLL的特性使它能够作为WEB服务器自身的扩充来装载。在  
      WEB服务器的地址空间运行,  
      而且只在第一次请求时装载一次,以后每一个后续请求通  
      过创建一个线程(仅用一个简单的函数调用)  
      来完成,这比CGI创建一个进程要节约大量  
      的时间和空间等资源。 
      
ISAPI扩展通常代替传统Web应用程序中CGI脚本的位置,由客户触发,为其特殊请求服务。 
      
------清单1-------------- 
      
1.<html>
 
 2. <img src="myGetGrp.dll">
  
 3.</html>  
      
如清单1所示代码,服务器将调用myGetGrp.dll中提供的函数得到一GIF图像文件数据发  
      送给客户浏览器,在这里,myGetGrp.dll就是一个ISAPI扩展。 
      
如果服务器确定将执行一个ISAPI扩展,  
      他首先检查此扩展是否已经装入高速缓存,若  
      没有,则指定的DLL被装载;装入DLL后,服务器就调用DLL中的HttpExtensionProc()函  
      数对请求提供服务, 这里是ISAPI程序员放置具体功能操作的位置,服务器将所有必要  
      的信息通过一结构类型参数传递给这个函数,包括请求本身的内容和程序员将用到的回  
      调函数等,用回调函数,可以将数据传递给用户以及执行其他的操作。 
      
注意:必须牢记服务器是启动多线程来处理同时接收到的多个请求的,所以必须正  
      确处理线程间的同步,否则将会导致数据破坏甚至系统崩溃。 
      
二、用C++ Builder开发ISAPI扩展应用程序 C++ Builder是Inprise公司继Delphi之后开发的又一个通用的客户/服务器结构的  
      开发工具。 它使用了C++语言,可以产生更快速和更高效的代码。目前已成为继Visual  
      Basic、Delphi之后,在32位Windows环境下最具有吸引力的开发工具之一。 
      
启动C++ Builder后,用File→New菜单项打开New Items对话框,在New页面下选中  
      Web Server Application选项,单击<OK>按纽,弹出一New Web  
      Server Application对 话框,选中ISAPI/NSAPI Dynamic将生成一ISAPI扩展应用程序框架,其主模块缺省名为  
      Project.cpp,其中主要实现了DLL的三个输出函数,说明如下: 
      
1.1 GetExtensionVersion()函数 这是一个非常简单的函数,  
      它唯一的目的是指定ISAPI版本,并给出扩展的描述。 当DLL第一次被装载时,由服务器调用。这发生在HttpExtensionProc()函数第一次调用  
      前, 在此函数中, 你所需做的全部就是用常量HSE_VERSION_MAJOR和HSE_VERSION_  
      MINOR(在Isapi2.hpp中定义)设置扩展版本域。并且返回一true值。 
      
GetExtensionVersion()函数实现实例见清单2。 
      
---------清单2----------------- 
       
      BOOL_export WINAPI GetextensionVersion(Isapi2::THSE_VERSION_INFO &Ver)  
      { /*设置扩展版本域*/  
      Ver.dwExtensionVersion=MAKELONG(HSE_VERSION_MAJOR,HSE_VERSION_MINOR);  
      Ver.lpszExtensionDesc="Example ISAPI extension";//设置扩展描述域  
      return true; //返回true }  
      
在此函数中,程序员还可以加入初始化代码,如全局变量的初始化等。 
      
1.2 HttpExtensionProc()函数 
      
HttpExtensionProc()  
      函数是扩展的功能实现部分,每次产生对扩展的请求,服务  
      器就调用这个函数,同时传递一类型为TEXTENSION_CONTROL_BLOCK结构的参数(ECB)  
      , 这个结构在Isapi2.hpp中定义: 
       
      struct TEXTENSION_CONTROL_BLOCK { unsigned cbSize;//结构大小 unsigned  
      dwVersion;//版本信息 unsigned ConnID; /*正在被服务的连接的ID;调用回调函数时必须作为一参数传递*/  
      unsigned dwHttpStatusCode;/*在HttpExtensionProc () 函数返回前,在此放置HTTP状态码,参见HTTP1.0规范定义*/  
      char lpszLogData[80];//接收一记录信息字符串 char *lpszMethod;//命名请求方式的字符串的指针  
      char *lpszQueryString;//含一个GET请求查询的字符串指针 char  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -