Классы Java для работы с потоками


Листинг 7



Листинг 7

. Файл store.c

#include <windows.h> #include <tchar.h> #include <wchar.h> #include <stdio.h> #include <stdlib.h> #include <string.h>

void main(int argc, char *argv[]) { int nInDatasize; char * szMethod; char szBuf[2000];

FILE *fDatabase; CRITICAL_SECTION csAddRecord;

szMethod = getenv("REQUEST_METHOD"); if(!strcmp(szMethod, "POST")); { nInDatasize = atoi( getenv("CONTENT_LENGTH"));

fread(szBuf, nInDatasize, 1, stdin); szBuf[nInDatasize] = '\0';

InitializeCriticalSection(&csAddRecord); EnterCriticalSection(&csAddRecord);

fDatabase = fopen("c:\\EMAIL.DAT", "a+"); if(fDatabase != NULL) { fputs(szBuf, fDatabase); fclose(fDatabase); }

LeaveCriticalSection(&csAddRecord); DeleteCriticalSection(&csAddRecord);

printf( "Content-type: text/plain\r\n\r\n"); printf("Stored information: %s", szBuf); } }

Этот текст подготовлен для работы в среде  Windows 95 или Windows NT, так как для синхронизации доступа к файлу мы использовали специфические для этих операционных систем функции работы с критическими секциями.

Свою работу программа CGI начинает с анализа переменной среды REQUEST_METHOD. Убедившись, что при запуске программы ей передали данные методом POST, программа определяет размер этих данных исходя из содержимого переменной среды CONTENT_LENGTH.

Далее программа считывает соответствующее количество байт данных из стандартного потока ввода, записывает их в файл. Затем, после добавления заголовка "Stored information:", программа CGI записывает полученную строку в стандартный выходной поток, передавая ее таким образом аплету Form.

Так как при реальной работе в сети Internet вашу программу CGI могут одновременно запустить несколько пользователей, для синхронизации обновления файла базы данных мы применили критическую секцию. В результате с файлом может работать в любой момент времени только одна копия программы CGI.

Еще одно замечание касается пути к файлу, который в нашем случае создается в корневом каталоге диска C:. При установке программы CGI на сервер вам необходимо обеспечить доступ на запись к каталогу, в котором располагается файл, для удаленных пользователей. О том, как это сделать, вы можете узнать из документации на ваш сервер Web.






- Начало -  - Назад -  - Вперед -



Книжный магазин