Microsoft Visual J++. Создание приложений и аплетов на языке Java


Исходный текст приложения CallCGI


Исходный текст приложения CallCGI приведен в листинге 3.9.

Листинг 3.9. Файл CallCGI\CallCGI.java

// =========================================================

// Вызов расширения сервера Web на базе интерфейса CGI

// из приложения Java

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW:    http://www.glasnet.ru/~frolov

//            или

//         http://www.dials.ccas.ru/frolov

// =========================================================



import java.io.*;

import java.net.*;

import java.util.*;

public class CallCGI

{

  // -------------------------------------------------------

  // main

  // Метод, получающий управление при запуске приложения

  // -------------------------------------------------------

  public static void main(String args[])

  {

    // Массив для ввода строки с клавиатуры

    byte bKbdInput[] = new byte[256];

    // Размер принятого блока данных

    int length;

    // Рабочая строка

    String str;

    // Адрес URL вызываемой программы CGI

    URL u;

    // Канал связи с расширением CGI

    URLConnection c;

    // Выходной поток для передачи данных расширению CGI

    PrintStream ps;

    // Входной поток для получения данных от расширения CGI

    DataInputStream is;

    try

    {

      // Выводим строку приглашения

      System.out.println("CGI extension call" +

        "\nEnter any string for send to CGI...");

      // Читаем строку, передаваемую расширению,

      // с клавиатуры

      length = System.in.read(bKbdInput);

       

      // Если строка не пустая, обрабатываем ее

      if(length != 1)

      {

        // Преобразуем строку в формат String

        str = new String(bKbdInput, 0);

        // Обрезаем строку, удаляя символ конца строки

        StringTokenizer st;

        st   = new StringTokenizer(str, "\n");

        str = new String((String)st.nextElement());


        // Выполняем кодировку URL для передаваемой строки

        String StrEncoded = URLEncoder.encode(str);

        // Отображаем перекодированную строку

        System.out.println("Encoded string: >" +

          StrEncoded + "<");

       

        // Создаем объект класса URL для расширения CGI       

        u = new URL(

          "http://frolov/frolov-cgi/controls.exe");

        // Открываем канал связи с расширением CGI

        c = u.openConnection();

        // Создаем выходной поток данных для передачи

        // введенной строки серверу CGI

        ps = new PrintStream(c.getOutputStream());

        // Передаем закодированную строку расширению CGI

        ps.println(StrEncoded);

        // Закрываем выходной поток

        ps.close();

        // Создаем входной поток для приема данных от

        // расширения CGI

        is = new DataInputStream(c.getInputStream());

       

        System.out.println(

          "\n------------------------------------------" +

          "\n Data from CGI extension" +

          "\n------------------------------------------\n");

        // Прием данных выполняем в цикле

        while (true)

        {

          // Получаем очередную строку

          str = is.readLine();

          // Если последняя строка, прерываем цикл

          if(str == null)

            break;

          // Отображаем принятую строку

          System.out.println(str);

        }

        // Закрываем входной поток

        is.close();

      }

    }

    catch(Exception ioe)

    {

      System.out.println(ioe.toString());

    }

   

    try

    {

      System.out.println(

        "Press <Enter> to terminate application...");

      System.in.read(bKbdInput);

    }

    catch(Exception ioe)

    {

      System.out.println(ioe.toString());

    }

  }

}


Содержание раздела