·您的位置: 首页 » 资源教程 » 编程开发 » JAVA、JSP » 一个必看的Java程序

一个必看的Java程序

类别: JAVA教程  评论数:0 总得分:0
//程序名 :TelnetApp.Java

 import java.applet.*;
 import java.awt.*;
 import java.io.*;
 import java.net.*;
 import java.util.*;

 public class TelnetApp extends Applet implements Runnable
 {
   //声明成员变量

   Thread client;
   TextArea log;

   TextField hostname;
   TextField userid;
   TextField password;
   Label hname;
   Label uid;
   Label psd;
  
   Button connect;
   Button bye;

   int wantTime;
   boolean logged;
   
   Socket socket =null;
   PrintStream os;
   DataInputStream is;

   public TelnetApp()
   {
     resize(400,300);
     setLayout(new BorderLayout());
     Panel p1=new Panel();
     log =new TextArea(10,80);
     log.setEditable(true);
     p1.add(log);
     add(\"North\",p1);

     Panel p2=new Panel();
       p2.add(hname=new Label(\"Hostname\"));
       p2.add(hostname =new TextField(20));
     p2.add(uid= new Label(\"Userid:\"));
     p2.add(userid =new TextField(10));
     p2.add(psd =new Label(\"Password:\"));
     p2.add(password =new TextField(10));
     password.setEchoCharacter(\'*\');

     add(\"Center\",p2);

     Panel p3=new Panel();
     p3.add(connect =new Button(\"Connect\"));
     p3.add(bye =new Button(\"Bye\"));
     bye.disable();
     add(\"South\",p3);

     logged = false;                                                                                          
   }

   public void run()
   {
     String fromServer=null;
     byte b[]=new byte[3];
     b[0]=(byte)\'n\';
     while(true){
                if((fromServer =getDate())!= null)
                   log.appendText(fromServer +\"/n\");
                          if(wantTime <0){
                                  bye();
                                  break;
                                         }
                if(logged){
                   delay(60*1000);
                   log.setText(\" \");
                   wantTime -= 1;
                   sendData(b,1);
                   }
     }
   }

   //建立主机连接

    private boolean connectHost(String hostName)
    {
      try{
      socket =new Socket(hostName,23);
      os =new PrintStream(socket.getOutputStream());
      is =new DataInputStream(socket.getInputStream());
     }catch(UnknownHostException e){
      log.setText(\"Trying to connect to unknown host:\" +e);
      return false;
     }catch(Exception e){
      log.setText(\"Exception:\" +e);
      return false;
     }
      return true;
    }

    // 接收信息
 
    String getDate()
    {
      String fromServer;
      int len;
      byte b[]=new byte[1000];
      try{
          fromServer =\"\";
          len =is.read(b);

          fromServer += new String(b,0);
      }catch(Exception e){
          log.setText(\"Exception:\"+e);
          return null;
      }
      return fromServer;
    }
     
    //发送信息 

    boolean sendData(byte b[],int len)
    {
      try{
          os.write(b,0,len);
          os.flush();
      }catch(Exception e){
          log.setText(\"Exception:\" + e);
          return false;
      }
      return true;
    }

    //关闭连接

    void closeSocket() 
    {
      try{
          os.close();
          is.close();
          socket.close();
          socket = null;
      }catch(Exception e){
          log.setText(\"Exception:\" +e);
      }
    }

    void toByte(byte[] b,String s)
    {
      int i;
      
      for(i=0;i<s.length();i++)
         b[i]=(byte)s.charAt(i);
      b[i] = 13;
      b[i+1]=10;
    }

    void negotiate()
    {
      byte b[]=new byte[20];
      b[0] =-1;b[1]=-5;b[2]=24;
      sendData(b,3);
      delay(400);

      b[0] =-1;b[1]=-6;b[2]=24;
      b[3] =0;b[4]=(byte)\'D\';b[5]=(byte)\'E\';
      b[6] =(byte)\'C\';b[7]=(byte)\'-\';b[8]=(byte)\'V\';
      b[9] =(byte)\'T\';b[10]=(byte)\'1\';b[11]=(byte)\'0\';
      b[12] =(byte)\'0\';b[13]=(byte)-1;b[14]=-16;
      sendData(b,15);
      delay(400);

      //其他选项
      b[0] =-1;b[1]=-3;b[2]=1;
      b[3]=-1;b[4]=-3;b[5]=3;
      b[6]=-1;b[7]=-3;b[8]=31;
      b[9]=-1;b[10]=-4;b[11]=-56;
      b[12]=-1;b[13]=-5;b[14]=1;
      sendData(b,15);
      delay(400);

      //login bbs
      toByte(b,\"bbs\");
      sendData(b,5);
      delay(400);
    }

    void login(String userid,String password)
    {
      byte b[] =new byte[20];
      toByte(b,userid);
      sendData(b,userid.length()+2);
      delay(400);

      toByte(b,password);
      sendData(b,password.length()+2);
      delay(400);
    }

    boolean enter()
    {
      if(connectHost(hostname.getText().trim()))
      {
        log.setText(\"connected/n\");

        negotiate();
        delay(400);

        login(userid.getText().trim(),password.getText().trim());
        return true;
       } else return false;
    }

    void toMainmenu()
    {
      byte b[]=new byte[20];
      for(int i=0;i<6;i++)
      {
        toByte(b,\" \");
        sendData(b,2);
      }

      for(int i=0;i<1;i++)
      {
        b[0] =(byte)\'q\';
        sendData(b,1);
        delay(200);
      }
    }

    void bye()
    {
      byte b[]= new byte[20];

      for(int i=0;i<10;i++)
      {
        b[0]=(byte)\'q\';
        sendData(b,1);
        delay(300);
      }

      b[0]=(byte)\'g\';
      sendData(b,1);
      delay(300);
      for(int i=0;i<6;i++)
      {
         toByte(b,\"\");
         sendData(b,2);
         delay(300);
      }
      client.stop();
      client=null;
      closeSocket();
      connect.enable();
      bye.disable();
    }

    void delay(int millisecond)
    {
       try{
           Thread.sleep(millisecond);
       }catch(InterruptedException e){
       }
    }

    public boolean action(Event e,Object arg)
    {
       switch(e.id){
       case Event.ACTION_EVENT:
            if(e.target == connect)
            {
               wantTime = 20;
               connect.disable();
               bye.enable();
               client =new Thread(this);
               client.start();
               if(enter())
                    toMainmenu();
               logged =true;
            }else  if(e.target == bye)
                   bye();
       }
       return true;
    }
 
    public void destroy(){
    }
    public void paint(Graphics g){}
    public void start(){}
    public void stop(){
    }
 }





-= 资 源 教 程 =-
文 章 搜 索
关键词:
类型:
范围:
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1