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

📄 ch05l06.txt

📁 《Web编程专家指南》
💻 TXT
字号:
Listing 5.6 The server code that supports DGI.int  ClientAgent :: LoadExt (const string &sModName, const string &sQuery, const string &sPathInfo, const string &sFormData){   APIRET   rc;   char     szObjNameBuf [128];   HMODULE  hModHandle;   rc = DosLoadModule(szObjNameBuf, sizeof szObjNameBuf, sModName.c_str(), &hModHandle);   if (rc != 0) {   // load the module in memory       TRACE(cerr<<"Unable to load "<<sModName<<" module [" <<rc<< "]" << endl;);      return rc;   }/* module loaded, resolve functions address */   PDGI_FN_START    fnStart;   PDGI_FN_DOACTION fnDoAction;   PDGI_FN_END      fnEnd;   PFN              pProcAddr;   rc = DosQueryProcAddr(hModHandle, 1, 0, &pProcAddr);   if (rc != 0) {      TRACE (cerr<< "Error [" << rc << "] addressing Start function" << endl;);      fnStart = 0;   } else fnStart = (PDGI_FN_START) pProcAddr;   rc = DosQueryProcAddr(hModHandle, 2, 0, &pProcAddr);   if (rc != 0) {      TRACE (cerr<<"Error [" << rc << "] addressing Action function" << endl;);      fnDoAction = 0;   } else fnDoAction = (PDGI_FN_DOACTION) pProcAddr;   rc = DosQueryProcAddr(hModHandle, 3, 0, &pProcAddr);   if (rc != 0) {      TRACE (cerr << "Error [" << rc << "] addressing End function" << endl;);      fnEnd = 0;   } else fnEnd = (PDGI_FN_END) pProcAddr;   TRACE(printf ("Start: %p\n", fnStart););   TRACE(printf ("Do: %p\n", fnDoAction););   TRACE(printf ("End: %p\n", fnEnd););   /* Invoke start function */   long  retCode;   if ((retCode = fnStart(putHtml, getData, (void *)this)) != 0) {      TRACE (cerr << "Start OK" << endl;);       // OK   } else {TRACE (cerr << "Start in error" << endl;);}char  szUrl [2560];   szUrl[0] = '\0';   if ((retCode = fnDoAction (sQuery.c_str(),     sPathInfo.c_str(),                              sFormData.c_str(),  szUrl ) ) != 0){   // OK      TRACE (cerr << "DoAction OK" << endl;);   } else {      TRACE (cerr << "DoAction in error" << endl;);   }   if ((retCode = fnEnd()) != 0) {  // OK      TRACE (cerr << "End OK" << endl;);   } else {      TRACE (cerr << "End in error" << endl;);   }   DosFreeModule (hModHandle);   // check if external module has rquested redirection   if (strlen(szUrl)) {      if (strstr(szUrl,"http:")) {         char  msg [512];         fprintf (stderr, "Returning 301 ERROR\n");         sprintf (msg, "HTTP/1.0 301 \"HTTPD/2 Server\"\r\n"                       "Server: A.Montefusco 3.0 -- on OS/2 2.x+\r\n"                       "Location: %s\r\n\r\n",                  szUrl);         pCn->Send (msg, strlen(msg));      } else         print (string(szUrl), TYPE_HTML);   }   return 0;}

⌨️ 快捷键说明

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