Связь с сервером Apache - PullRequest
       24

Связь с сервером Apache

0 голосов
/ 27 октября 2009

Кто-нибудь знает, как общаться с сервером Apache со стороны клиента, используя Win32 или C #. и могу ли я получить управление для выполнения процесса на сервере? если да то как сделать? как получить файл, отправленный apache?.

Пожалуйста, помогите мне ...

Спасибо

Ответы [ 2 ]

3 голосов
/ 27 октября 2009

Вы можете использовать HTTPWebRequest и HTTPWebResponse для отправки запроса на веб-сервер и получения ответа.

Для Пример

static void Main(string[] args)
{
    // used to build entire input
    StringBuilder sb  = new StringBuilder();
    // used on each read operation
    byte[]        buf = new byte[8192];
    // prepare the web page we will be asking for
    HttpWebRequest  request  = (HttpWebRequest)
        WebRequest.Create("http://www.mayosoftware.com");
    // execute the request
    HttpWebResponse response = (HttpWebResponse)
        request.GetResponse();
    // we will read data via the response stream
    Stream resStream = response.GetResponseStream();

    string tempString = null;
    int    count      = 0;
    do
    {
        // fill the buffer with data
        count = resStream.Read(buf, 0, buf.Length);
        // make sure we read some data
        if (count != 0)
        {
            // translate from bytes to ASCII text. 
                            // Not needed if you'll get binary content.
            tempString = Encoding.ASCII.GetString(buf, 0, count);
            // continue building the string
            sb.Append(tempString);
        }
    }
    while (count > 0); // any more data to read?
    // print out page source
    Console.WriteLine(sb.ToString());
}
2 голосов
/ 27 октября 2009

Хорошо. Предполагая, что вы говорите об «Apache httpd», мы говорим о сервере, который говорит HTTP. Практически любой язык программирования имеет несколько классов «HTTP Client». В случае C # вы можете использовать HttpWebRequest . Винко привел отличный пример «копировать / вставить» .

Чтобы запустить процесс на стороне сервера, вам понадобится " сценарий на стороне сервера ". Если для сервера httpd нет доступных модулей, вы всегда можете прибегнуть к CGI. Это потенциально опасно, если не осторожно. Но вы можете сказать это обо всех сценариях на стороне сервера (здесь важно «если не соблюдать осторожность»).

Похоже, вы новичок в динамичной веб-разработке. И, насколько мне это не нравится, я должен сказать, что сообщество PHP является отличной отправной точкой .

Чтобы дать приблизительный обзор того, как все работает:

  1. Клиент (приложение You C #) делает «запрос» к серверу (по умолчанию TCP-соединение с портом 80)
  2. Когда сервер (httpd) прослушивает этот порт, он принимает это соединение и начинает «говорить HTTP»
  3. Сервер получает URL-адрес из команды HTTP GET и решает, что с ним делать.
  4. Если этот URL-адрес сопоставлен со статическим ресурсом, сервер отправляет «ответ» с содержимым ресурса и готово.
  5. Если этот URL-адрес отображается на динамический ресурс, сервер делегирует работу другому процессу. Этот процесс выполняется, и http-сервер получает стандартный результат процесса в качестве результата (в случае PHP, CGI и других подобных технологий). Затем сервер отправляет этот результат обратно клиенту.

Что я понял меньше всего, когда начал, так это "загадочные" httpd-конфигурации. Они просты для понимания, хотя. Они предназначены для того, чтобы сообщить серверу, как (и что) сопоставить с внешним процессом (как отмечено в шагах 4a и 4b).

Итак, в случае PHP:

LoadModule php5_module modules/libphp5.so

Это делает директивы «external process» и configuarion доступными для сервера (загружает расширения).

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

Стандартный обработчик Apache-httpd предполагает, что URL-адрес сопоставляется с файлом в файловой системе. Эта директива конфигурации указывает httpd обрабатывать (обрабатывать) каждое имя файла, оканчивающееся на «.php», с использованием модуля PHP, прежде чем возвращать его клиенту.

Конечная нота

Эти шаги очень аналогичны для других серверных приложений. Я привел PHP только в качестве практического примера. И у него очень хорошая документация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...