启航-▲每天有个新的开始▲  
公告
日历
统计
  • 随笔 - 94
  • 文章 - 2
  • 评论 - 8
  • 引用 - 2

导航

 

2007年10月23日

启用 ASP 页

1.

IIS 管理器 中,展开本地计算机,然后单击“Web 服务扩展”。

2.

在详细信息窗格中,单击“Active Server Pages”,然后单击“允许”。

注:

如果 ASP 页需要 ISAPI、CGI、Microsoft ASP.NET、WebDAV 或其他扩展才能操作,您将需要同时启用这些扩展。

相关信息

有关 ASP 页的详细信息,请参阅启用 ASP 页

有关 ASP 概念的简介,请参阅关于 ASP

有关创建 ASP 页和开发 Web 应用程序的信息,请参阅 Web 应用程序指南

posted @ 2007-10-23 15:59 bighope 阅读(78) 评论(0) 编辑
 
//下载文件szFileURL从nStart开始nLen字节,下载内容用ppIResult带回 
ENetRequestResult   CFileTransfer::DownloadFile(const   char*   szFileURL,   unsigned   int   nStart,   unsigned   int   nLen,   IMemBlock**   ppIResult) 

//参数查错 
if(   (!szFileURL)   ¦ ¦   (!nLen)   ¦ ¦   (!ppIResult)   ) 

return   ENRR_InvalidParam; 


try 

//初始化当前线程COM 
CAutoInitCOM   _COMAutoIniter; 

//申请内存块对象 
std::auto_ptr <CMemBlock >   pMemBlock(new   CMemBlock); 
if(   !pMemBlock.get()   )   return   ENRR_AllocMem; 
if(   !pMemBlock- >Resize(nLen)   )   return   ENRR_AllocMem; 

//解析URL 
const   CSampleURL   url(szFileURL); 

//创建“连接”对象 
std::auto_ptr <CHttpConnection >   pConnection(   m_pSession- >GetHttpConnection(url.GetHostAddr(),   url.GetPort())   ); 
if(   !pConnection.get()   )   return   ENRR_NetErr; 

//创建“file”对象 
std::auto_ptr <CHttpFile >   pFile; 

static   const   char*   ppAccept[]   =   {"*/*",   NULL}; 
pFile   
=   std::auto_ptr <CHttpFile >
pConnection
- >OpenRequest( 
CHttpConnection::HTTP_VERB_GET, 
url.GetObject(), 
NULL, 
1
ppAccept, 
NULL, 
INTERNET_FLAG_RELOAD   ¦   INTERNET_FLAG_DONT_CACHE 

); 

if(   !pFile.get()   )   return   ENRR_NetErr; 

//添加http请求头,指示下载的部分 

CString   strHeader; 
strHeader.Format(
"Range:bytes=%u-\r\n",   nStart); 
VERIFY(   pFile
- >AddRequestHeaders(strHeader,   HTTP_ADDREQ_FLAG_REPLACE   ¦   HTTP_ADDREQ_FLAG_ADD)   ); 


//发送请求 
if(   !pFile- >SendRequest()   )   //!在小猫拨号上网的条件下,这里会等待很长时间,我进去跟踪了一下实际是(::HttpSendRequest)等了很长时间 

return   ENRR_NetErr; 


//判断服务器回应码 
if(   !IsHttpServerResponseSucceed(*pFile)   ) 

return   ENRR_NetErr; 


//下载数据 
UINT   nDownloaded   =   0;   //已下载 
for(;;) 

const   UINT   nReadLen   =   pFile- >Read(((BYTE*)pMemBlock- >GetAddr())   +   nDownloaded,   pMemBlock- >GetSize()   -   nDownloaded); 
if(   !nReadLen   )   break;   //读完了 
nDownloaded   +=   nReadLen; 

assert(   nDownloaded   
<=   pMemBlock- >GetSize()   ); 
if(   nDownloaded   <   pMemBlock- >GetSize()   ) 

pMemBlock
- >Resize(   nDownloaded   ); 


//别忘了对象是要交给Caller去管理的 
*ppIResult   =   pMemBlock.release(); 

catch(CInternetException*   e) 

char   buf[1024]; 
e
- >GetErrorMessage(buf,   sizeof(buf));   //!在小猫拨号上网的条件下,这在里总会是”操作超时” 
TRACE("%s\n",   buf); 
e
- >Delete(); 
return   ENRR_NetErr;   //WinInet异常 

catch(

assert(   
!"未知异常!"   ); 
return   ENRR_NetErr; 


return   ENRR_Ok; 


posted @ 2007-10-23 11:46 bighope 阅读(532) 评论(0) 编辑
 
    只有注册用户登录后才能阅读该文。阅读全文
posted @ 2007-10-23 11:37 bighope 阅读(154) 评论(1) 编辑
 
CString   DomainWinIntet::Login(const   CString&   userId,const   CString&   passWord) 

CString   text; 
CString   resource; 
CInternetSession   m_session(NULL,
0); 
CHttpFile
*   pHttpFile=(CHttpFile*)m_session.OpenURL("http://域名/login.jsp?method=post&username=ldm&password=123456"); 
while(pHttpFile- >ReadString(text)) 

resource
=resource+"\r\n"
resource
+=text; 

pHttpFile
- >Close(); 
m_session.Close(); 
return   resource; 
}
posted @ 2007-10-23 11:33 bighope 阅读(303) 评论(0) 编辑
 
C/C++ code
#include <stdio.h> #include <iostream> #include <winsock2.h> #include <process.h> #include "SockInit.h" using namespace std; #define MAX_REQUESTLINE_LEN 2048 // IE请求行长度 void __cdecl ServerThreadProc(void *param); int TCPsend(SOCKET s,const char*buf,int len,int flags); int TCPrecv(SOCKET s,const char*buf,int len,int flags); /************************************************ 调试环境:Visual C++6.0 SP6+platform SDK 2003 R2 程序名称:HTTP proxy Server(HttpProxySvr.cpp) 功能 :IE通过设置代理方式上网,IE所有请求均 先发到该代理服务器,代理服务器 将请求直接转发给webserver, 后从webserver读取响应后发回IE 存在的问题: IE设置代理后只能显示网页文本内容,图片 显示不了,若网页嵌有歌曲,歌曲也下载不 下来(自然歌曲也播放不了)... Date: 2007/10/12 author: liqisong eamil : liqisong611@yahoo.com.cn **************************************************/ int main() { USHORT uPort=9999; // 通信端口 WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { return 0; } if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 ) { WSACleanup( ); return 0; } SOCKET sListen = socket(AF_INET,SOCK_STREAM,0); if(sListen == INVALID_SOCKET) { printf("Failed socket(),error code :%d",WSAGetLastError()); return 0; } sockaddr_in sin; sin.sin_addr.S_un.S_addr = INADDR_ANY; sin.sin_family =AF_INET; sin.sin_port = htons(uPort); if(bind(sListen,(sockaddr*)&sin,sizeof(sin))==SOCKET_ERROR) { printf("Failed bind(),error code :%d",WSAGetLastError()); closesocket(sListen); return 0; } int res =listen(sListen,200); sockaddr_in addrRemote; int len =sizeof(addrRemote); while(true) { SOCKET sNew = accept(sListen,(sockaddr*)&addrRemote,&len); if(sNew == INVALID_SOCKET) { printf("Failed accept(),error code :%d",WSAGetLastError()); return 0; } printf("收到一个IE连接(IP:%s)\n",inet_ntoa(addrRemote.sin_addr)); // 创建一个线程处理该连接 (每客户单线程模式...) _beginthread(ServerThreadProc,0,(void*)sNew); } closesocket(sListen); return 0; } void __cdecl ServerThreadProc(void *param) { SOCKET sock = (SOCKET)param; //与浏览器连接的套接口 char request[MAX_REQUESTLINE_LEN]; memset(request,0,MAX_REQUESTLINE_LEN); int res =recv(sock,request,MAX_REQUESTLINE_LEN,0); // 接收浏览器(客户端)发来的请求 if(res==0) { printf("连接断开\n"); closesocket(sock); return; } shutdown(sock,SD_RECEIVE); // 打印收到的请求 printf("header length :%d header: %s\n",res,request); // 分析请求行(分离出WebServer域名) char szAddrName[1024]={0}; //域名 int i =11; while(request[i]!='/'&&i<res) { szAddrName[i-11] = request[i]; i++; } szAddrName[i-11]='\0'; printf("WebServer address: %s\n\n",szAddrName); // 向WebServer提交请求 SOCKADDR_IN saServer; LPHOSTENT lphostent; SOCKET hsocket; int nRet; lphostent=gethostbyname(szAddrName); // 通过域名获得目标WebServer的IP if(lphostent==NULL) { printf("Failed gethostbyname(),error code:%d\n",WSAGetLastError()); return ; } hsocket = socket(AF_INET,SOCK_STREAM,0); if(hsocket==INVALID_SOCKET) { printf("Failed socket(),error code:%d\n",WSAGetLastError()); return ; } saServer.sin_family = AF_INET; saServer.sin_port = htons(80); saServer.sin_addr= *((LPIN_ADDR)*lphostent->h_addr_list); nRet = connect(hsocket,(LPSOCKADDR)&saServer,sizeof(SOCKADDR_IN)); if(nRet==SOCKET_ERROR) { printf("Failed connect(),error code:%d\n",WSAGetLastError()); closesocket(hsocket); return; } // 向webserver转发IE请求 nRet = TCPsend(hsocket,request,strlen(request),0); char dest[1000]; nRet=1; int senlen=0; while(nRet>0) { memset(dest,0,1000); nRet=recv(hsocket,dest,sizeof(dest)-1,0); // 从webserver获取数据 if(nRet==0) { printf("与webserver(%s)的连接关闭\n",szAddrName); break; } else if(nRet==SOCKET_ERROR ) { printf("Failed recv(),error code:%d\n",WSAGetLastError()); break; } dest[nRet]='\0'; senlen = TCPsend(sock,dest,strlen(dest),0); //将数据转发给IE浏览器 if(senlen==0) { sockaddr_in sin; int len = sizeof(sin); if(getpeername(sock,(sockaddr*)&sin,&len)== SOCKET_ERROR) { printf("Failed getpeername(),error code:%d\n",WSAGetLastError()); break; } printf("与浏览器(%s)的一个连接关闭...\n",inet_ntoa(sin.sin_addr)); break; } else if(senlen==SOCKET_ERROR) { printf("Failed send(),error code:%d\n",WSAGetLastError()); break; } // printf("%s\n",dest); } // end of while(nRet>0) closesocket(sock); closesocket(hsocket); } int TCPsend(SOCKET s,const char*buf,int len,int flags) { int n=0,sendCount=0; int length =len; if(buf==NULL) return 0; while(length>0) { n=send(s,buf+sendCount,length,flags); //发送数据, if(n==SOCKET_ERROR)//网络出现异常 { printf("Failed send(),error code:%d\n",WSAGetLastError()); break; } length-=n; sendCount+=n; } return sendCount; // 返回已发送的字节数 } int TCPrecv(SOCKET s,char *buf,int len,int flags) { int nRev=0,recvCount=0; int length =len; if(buf==NULL) return 0; // 循环接收数据 while(length>0) { nRev =recv(s,buf+recvCount,length,flags); if(nRev==SOCKET_ERROR)//网络出现异常 { printf("Failed recv(),error code:%d\n",WSAGetLastError()); break; } length-=nRev; recvCount+=nRev; } return recvCount; //返回接收到的字节数 }
以下一行出错了
senlen = TCPsend(sock,dest,strlen(dest),0);  //将数据转发给IE浏览器

因为接受图片不是字符串,用strlen()不会正确,用nRet即可。
posted @ 2007-10-23 11:18 bighope 阅读(105) 评论(0) 编辑
 
    只有注册用户登录后才能阅读该文。阅读全文
posted @ 2007-10-23 11:10 bighope 阅读(8) 评论(0) 编辑
 
/*------------------------------------------------------------------------------------------------------------------- 
函数功能:发送HTTP头 
参    数:sockfd 服务器句柄; 
      head HTTP头 
返回值:  成功返回0,失败返回错误代码 
--------------------------------------------------------------------------------------------------------------------*/ 
int SendHttpHead(int sockfd, HTTPHEAD head) 

char data[100]; 
char dataEnc[100]; 

char httphead[500] = "POST "; 
strcat(httphead, head.servicename); 
strcat(httphead, " HTTP/1.0\n"); 

strcat(httphead, "Connection: keep-alive\n"); 

strcat(httphead, "Content-Type: text/html; charset=\"gb2312\"\n"); 

strcat(httphead, "Content-Length: "); 
strcat(httphead, head.ContentLength); 
strcat(httphead, "\n"); 

strcat(httphead, "Host: "); 
strcat(httphead, head.HostIP); 
strcat(httphead, ":"); 
strcat(httphead, head.HostPort); 
strcat(httphead, "\n"); 

strcat(httphead, "Accept: text/html, */*\n"); 

strcat(httphead, "User-Agent: Mozilla/3.0 (compatible; Indy Library)\n"); 

strcat(httphead, "Authorization: Basic "); 
strcpy(data, head.TaxPayerNO); 
strcat(data, ":"); 
strcat(data, "888888\n"); 
Base64_Enc(dataEnc, data, strlen(data)); 
strcat(httphead, dataEnc); 

strcat(httphead, "proxy-Authorization: Basic Og==\n"); 

if ( send(sockfd, httphead, strlen(httphead) ,0) == -1 )  

return -1; 

return 0; 

}
posted @ 2007-10-23 10:44 bighope 阅读(1003) 评论(0) 编辑
 
Copyright © bighope Powered by: 博客园 模板提供:沪江博客