Сетевые технологии. Баканов В.М. - 19 стр.

UptoLike

Составители: 

- 19 -
ту); исполняемый файл CGI_CPP.EXE должен находиться в каталоге
S:\TEST_CGI\CGI_BIN\. С целью компиляции в C++Builder вер.3 или 4 не
требующего дополнительных BPL- и DLL-файлов приложения следует в
вызываемом посредством выбора в главном меню варианта
Project|Options…
окне
Project Options интегрированной среды снять флаги с указателя Build
with runtime packages (закладка Packages) и с указателя Use dynamic RTL (за-
кладка
Linker). Исходный текст C-приложения приведен ниже [3]:
void DecodeStr(char *sString);
char DecodeHex(char *str);
//---------------------------------------------------------------------------
void
__fastcall TForm1::MainFormCreate(TObject *Sender)
// выполняется при создании формы MainForm
{ FILE *f;
char sBuff[8196], // буфер для принятых от броузера данных
sSubStr[512]; // буфер для каждой подстроки
int lData; // длина буфера полученных данных
//
//f=fopen("s:\\a.htm", "w+"); // вывод в дисковый файл для отладки приложения
f=stdout;
//
// вывод строки заголовка HTTP
fprintf(f, "Content-type: text/html\n\n"); // обязательно \n\n !!!
//
// определение метода передачи параметров (берется из переменной
// среды REQUEST_METHOD)
char *sMethod=getenv("REQUEST_METHOD");
//
if (!strcmp(sMethod, "POST")) // это метод POST !!!
{
fprintf(f, "Используется метод посылки данных POST<P>");
//
// определение общей длины полученных от броузера данных
// (берется из CONTENT_LENGTH)
lData=atoi(getenv("CONTENT_LENGTH"));
// копируем эти данные (длиной lData) из входного потока stdin в буфер sBuff
fread(sBuff, lData, 1, stdin);
sBuff[lData]='\0'; // закрываем строку нулем
} // конец взятия данных методом POST
//
else
if (!strcmp(sMethod, "GET")) // это метод GET !!!
{
fprintf(f, "Используется метод посылки данных GET<P>");
// получить данные из переменной среды QUERY_STRING
strcpy(sBuff, getenv("QUERY_STRING"));
lData=strlen(sBuff);
ту); исполняемый файл CGI_CPP.EXE должен находиться в каталоге
S:\TEST_CGI\CGI_BIN\. С целью компиляции в C++Builder вер.3 или 4 не
требующего дополнительных BPL- и DLL-файлов приложения следует в
вызываемом посредством выбора в главном меню варианта Project|Options…
окне Project Options интегрированной среды снять флаги с указателя Build
with runtime packages (закладка Packages) и с указателя Use dynamic RTL (за-
кладка Linker). Исходный текст C-приложения приведен ниже [3]:

void DecodeStr(char *sString);
char DecodeHex(char *str);

//---------------------------------------------------------------------------
void
__fastcall TForm1::MainFormCreate(TObject *Sender)
// выполняется при создании формы MainForm
{ FILE *f;
   char sBuff[8196], // буфер для принятых от броузера данных
        sSubStr[512]; // буфер для каждой подстроки
   int lData; // длина буфера полученных данных
//
//f=fopen("s:\\a.htm", "w+"); // вывод в дисковый файл для отладки приложения
   f=stdout;
//
// вывод строки заголовка HTTP
   fprintf(f, "Content-type: text/html\n\n"); // обязательно \n\n !!!
//
// определение метода передачи параметров (берется из переменной
// среды REQUEST_METHOD)
   char *sMethod=getenv("REQUEST_METHOD");
//
   if (!strcmp(sMethod, "POST")) // это метод POST !!!
    {
     fprintf(f, "Используется метод посылки данных POST

"); // // определение общей длины полученных от броузера данных // (берется из CONTENT_LENGTH) lData=atoi(getenv("CONTENT_LENGTH")); // копируем эти данные (длиной lData) из входного потока stdin в буфер sBuff fread(sBuff, lData, 1, stdin); sBuff[lData]='\0'; // закрываем строку нулем } // конец взятия данных методом POST // else if (!strcmp(sMethod, "GET")) // это метод GET !!! { fprintf(f, "Используется метод посылки данных GET

"); // получить данные из переменной среды QUERY_STRING strcpy(sBuff, getenv("QUERY_STRING")); lData=strlen(sBuff); - 19 -