使用WAP的手机监听你的网络

Java是一个开放、标准、通用的网络程序运行平台,用Java编写的应用程序可以适用于多种不同的平台和终端而无需修改程序,同样,基于WAP的手机也可以使用Java的平台或与后端服务器进行交互来完成各种复杂的功能。你有没有想过,坐在汽车里或者走在路上就可以轻轻松松的管理你复杂的互联网络或局域网络。使用Java Servlet就可以解决这个问题。

  下面是一个可以让你在支持WAP的手机上监听你的网络的简单的Java servlet程序,类似于dos下的ping命令。这个程序相当在你的主机上执行了ping命令,并在你的手机上显示结果。 用法如: http://host/servlet/WAPping 或者把IP地址作为一个参数传给主机,如: http://host/servlet/WAPping?IP_address

  你可以在配置文件中更改常用的设置, Servlet程序必须以配置文件名为初始的参数,参数描述了一个文本文件名,文件中存放你设定的信息。

  对于 Tomcat 中的web.xml,可以设置:

  <servlet>

  <servlet-name>WAPping</servlet-name>

  <servlet-class>WAPping</servlet-class>

  <init-param>

  <param-name>config</param-name>

  <param-value>config file path");

     if(str1 == null)

      printwriter.println(MainWmlCard(str));

     else

      if(str1.equals(""))

       {

         printwriter.println(MainWmlCard(str));

       }

      else

       {

        String str2 = getFromQuery(str1, "act=");

        if(str2.equals("3"))

        printwriter.println(writeWmlCommand(s,httpservletrequest.getParameter("cmd")));

        else

         printwriter.println(writeWmlCommand(str, str1));

        }

       printwriter.flush();

       printwriter.close();

      }

     private String MainWmlCard(String str)

   {

    StringBuffer stringbuffer = new StringBuffer("");

    stringbuffer.append("<wml>"  NEWLINE);

    stringbuffer.append("<head>"  NEWLINE);

    stringbuffer.append("<meta http-equiv=\"Cache-Control\" content=\"max-age=0\" forua=\"true\"/>"  NEWLINE);

    stringbuffer.append("</head>"  NEWLINE);

    stringbuffer.append("<card id=\"mainshell\" title=\"WAPping Card\">"  NEWLINE);

    stringbuffer.append("<do type=\"accept\" label=\"Exec\">"  NEWLINE);

    stringbuffer.append(""  NEWLINE);

    stringbuffer.append(""  NEWLINE);

    stringbuffer.append(""  NEWLINE);

    stringbuffer.append(""  NEWLINE);

    stringbuffer.append("<p align=\"center\"><b>WAP ping</b></p>"  NEWLINE);

    stringbuffer.append("<p>Host><input type=\"text\" name=\"sCmd\" value=\"\" emptyok=\"false\"/></p>"  NEWLINE);

    stringbuffer.append("</card>"  NEWLINE);
    stringbuffer.append("</wml>"  NEWLINE);

    return stringbuffer.toString();

   }

   private String getId()

   {

    String str = "";

    synchronized(SessionIdLock)

    {

     long cTM = System.currentTimeMillis();

     Random random = new Random();

     str = String.valueOf(cTM);

     for(int i = cTM; i <= 6; i  )

      str = str  (int)(1.0D  6D * random.nextDouble());

      }

     return str;

    }

   private String getFromQuery(String str, String str1)

    {

     if(str == null)

      return "";

      int i;

      if((i = str.indexOf(str1)) < 0)

       return "";

       String str2 = str.substring(i  str1.length());

       if((i = str2.indexOf("&")) < 0)

        return str2;

       else

        return str2.substring(0, i);

       }

   private String writeWmlCommand(String str, String str1)

   throws IOException

    {

     StringBuffer stringbuffer = new StringBuffer();

     String str2;

     if(str1 == null)

      str2 = "";

     else

      str2 = str1;

      stringbuffer.append("<wml>"  NEWLINE);

      stringbuffer.append("<head>"  NEWLINE);

      stringbuffer.append("<meta http-equiv=\"Cache-Control\" content=\"max-age=0\" forua=\"true\"/>"  NEWLINE);

      stringbuffer.append("</head>"  NEWLINE);

      stringbuffer.append("<card id=\"execshell\" title=\"WAPping Card\">"  NEWLINE);

      stringbuffer.append("<do type=\"accept\" label=\"Ok\">"  NEWLINE);

      stringbuffer.append("<go href=\""  str  "?"  "fct"  "="  getId()  "\"/>"  NEWLINE);

      stringbuffer.append("</do>"  NEWLINE);

      str2 = str2.trim();

      if(str2.length() == 0)

       {

        stringbuffer.append("<p>空的命令行</p>");

        }

      else

       {

        str2 = executeCmd((String)configuration.get("prefix")  " ping "  (String)configuration.get("ping")  " "  str2, "<br/>");

      if(str2.length() > 900)

       str2 = str2.substring(0, 900)  "...";

       stringbuffer.append("<p>"  replaceDollar(str2)  "</p>");

      }

      stringbuffer.append("</card>"  NEWLINE);

      stringbuffer.append("</wml>"  NEWLINE);

      return stringbuffer.toString();

     }

    private String executeCmd(String str, String str1)

    {

     String str2 = "";

      String str4 = str1  "host>"  str;

      try

      {

       Process process = Runtime.getRuntime().exec(s);

       java.io.InputStream inputstream = process.getInputStream();

       BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(inputstream));

       String str3;

       while((str3 = bufferedreader.readLine()) != null)

        str4 = str4  str1  prepareMsg(str3)  NEWLINE;

         process.waitFor();

        bufferedreader.close();

        }

       catch(Exception exception)

       {

        str4 = str4  str1  exception;

        }

      return str4;

     }

    public String getServletInfo()

    {

     return "WAP ping 程序";

    }

    private String prepareMsg(String str)

    {

     StringBuffer stringbuffer = new StringBuffer("");

     if(str.length() == 0)

      return "";

      for(int i = 0; i < str.length(); i  )

      {

       char c = str.charAt(i);

       if(c == '>')

        stringbuffer.append(">");

       else

         if(c == '<')

          stringbuffer.append("<");

         else

          if(c == '&')

           stringbuffer.append("&");

          else
    
           if(c == '"')

            stringbuffer.append(""");

            else

             stringbuffer.append(c);

            }

            return stringbuffer.toString();

           }

     private String replaceDollar(String str)

      {

       StringBuffer stringbuffer = new StringBuffer("");

        for(int i = 0; i < str.length(); i  )

         {

          char c;

          if((c = str.charAt(i)) == '$')

           stringbuffer.append("$$");

          else

            stringbuffer.append(c);

           }

           return stringbuffer.toString();

          }

      private void readConfig(String str, Hashtable hashtable) file://读入参数文件

       {

         try

          {

           BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(new FileInputStream(str)));

           String str1;

           while((str1 = bufferedreader.readLine()) != null)

            {

              str1 = str1.trim();

              if(str1.length() > 0)

               {

                int i = str1.indexOf("=");

                if(i > 0 && i < str1.length() - 1 && str1.charAt(0) != '#' && !str1.startsWith("//"))

          hashtable.put(str1.substring(0, i).trim(), str1.substring(i  1).trim());

          }

         }

        }

     catch(Exception _ex) { }

      if((String)hashtable.get("prefix") == null)

       hashtable.put("prefix", ""); file://如果“prefix”参数为空,则设prefix为默认值

       if((String)hashtable.get("ping") == null)

        hashtable.put("ping", ""); file://如果“ping”参数为空,则设ping为默认值

        }

       public WAPping()

       {

       }

      private static Object SessionIdLock = new Object();

      private static final int HOW_LONG = 6;

      private static final int MAX_WML = 900;

      private static final String DEFTITLE = "WAP ping";

      private static final String DEFPREFIX = "";

      private static final String DEFPING = "";

      private static final String CONFIG = "config";

      private static final String FICT = "fct";

      private static final String CMD = "cmd";

      private static final String ACTION = "act";

      private static final String UPFRAME = "1";

      private static final String DOWNFRAME = "2";

      private static final String RUNCMD = "3";

      private static final String HISTORY = "4";

      private static final String PREFIX = "prefix";

      private static final String PING = "ping";

      private static String NEWLINE = "\n";

      private static String separator = "/";

      private static Hashtable configuration;

     }

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [Java] 的这些文章也感兴趣:

从XML到Java代码的数据绑定之一
向web服务传递文件
Java对等计算实践:基于 IP 多播的发现
Java源码解读之util.ArrayList
Apache Tuscany SCA Java 架构指南
JavaScript Development Toolkit 简介
争论:Java是否应该停止增加新特性
Sun会把SCA集成到Java EE规范中吗?
Java学习指路---引导你更好的技术之路
WebSphere Application Server 7.0 安装及新特性简介