it167.com  设为主页
 收藏本站
 
  资讯:业界动态 | 软件动态 | 人物专栏 | 安全资讯 | 网络生活 | 电子商务 | 小游戏 | 视频 | 美女图片 | 音乐
  网络编程 | 网站运营 | 网页制作 | 图形图象 | 操作系统 | 媒体动画 | 软件教学 | 网络应用 | 邮件系统 | 网络安全 | 认证考试
asp | .net | php | jsp | Sql | java | Dreamweaver | FrontPages | Javascript | css | Coreldraw | photoshop | Flash | Coreldraw
当前位置: > 主页>网络编程>Java>JAVA开发技巧>一个必看的Java程序
最新新闻

·机会与整合 边缘化互联
·TOM-Skype新增三大本地
·雅虎抢闸邮箱竞赛 网易
·新浪抢攻北京奥运
·洞悉网络口碑的掘金机会
·拆解网络病毒黑金交易
·木马下载器近期出现新变
·《互联网周刊》第17期文
·Web2.0是否催生自吹自擂
·三张宝宝裸照招来MSN封
热门新闻
·jsp 下实现防止重复在线
·存储过程
·构建自己的基于Java的超
·构建自己的基于Java的超
·Web应用中的中文问题
·学习MySQL常用操作命令
·MySQL中修改密码及访问
·Hibernate 3新增XML关系
·java实现ftp下载文件
·简单说说SpringFramewor
推荐新闻
 
 

一个必看的Java程序  

作者:   来源:   点击:   日期:2007-12-04

一个必看的Java程序
关键字:不详
//程序名 :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(){
    }
 }


文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【论坛讨论

   相关文章:
·存储过程 ·jsp 下实现防止重复在线,统计在线人数的
·构建自己的基于Java的超级计算机 ·构建自己的基于Java的超级计算机
·Web应用中的中文问题 ·学习MySQL常用操作命令

   文章评论:(0条)
  
 请留名: 匿名评论   点击查看所有评论 网管论坛
 

  责任编辑:it167  声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。