|
|
一个必看的Java程序 |
|
|
作者:未知 来源:月光软件站 加入时间:2005-6-5 月光软件站 |
//程序名 :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(){ } }

|
|
相关文章:相关软件: |
|