import sun.net.ftp.*;
import sun.net.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.io.*;
public class ftpapplet extends applet
{
ftpclient aftp;
dataoutputstream outputs ;
telnetinputstream ins;
telnetoutputstream outs;
textarea lsarea;
label lblprompt;
button btnconn;
button btnclose;
textfield txtuid;
textfield txtpwd;
textfield txthost;
int ch;
public string a=”没有连接主机”;
string hostname=””;
public void init () {
setbackground(color.white);
setlayout(new gridbaglayout());
gridbagconstraints gbc = new gridbagconstraints();
lblprompt = new label(“没有连接主机”);
lblprompt.setalignment(label.left);
btnconn = new button(“连接”);
btnclose = new button(“断开”);
btnclose.enable(false);
txtuid = new textfield(“”,15);
txtpwd = new textfield(“”,15);
txtpwd.setechocharacter(’*’);
txthost = new textfield(“”,20);
label lbluid = new label(“user id:”);
label lblpwd = new label(“pwd:”);
label lblhost = new label(“host:”);
lsarea = new textarea(30,80);
lsarea.seteditable(false);
gbc.gridwidth= gridbagconstraints.remainder;
gbc.fill = gridbagconstraints.horizontal;
((gridbaglayout)getlayout()).setconstraints(lblprompt,gbc);
add(lblprompt);
gbc.gridwidth=1;
((gridbaglayout)getlayout()).setconstraints(lblhost,gbc);
add(lblhost);
gbc.gridwidth=gridbagconstraints.remainder;
((gridbaglayout)getlayout()).setconstraints(txthost,gbc);
add(txthost);
gbc.gridwidth=1;
((gridbaglayout)getlayout()).setconstraints(lbluid,gbc);
add(lbluid);
gbc.gridwidth=1;
((gridbaglayout)getlayout()).setconstraints(txtuid,gbc);
add(txtuid);
gbc.gridwidth=1;
((gridbaglayout)getlayout()).setconstraints(lblpwd,gbc);
add(lblpwd);
gbc.gridwidth=1;
((gridbaglayout)getlayout()).setconstraints(txtpwd,gbc);
add(txtpwd);
gbc.gridwidth=1;
gbc.weightx=2;
((gridbaglayout)getlayout()).setconstraints(btnconn,gbc);
add(btnconn);
gbc.gridwidth=gridbagconstraints.remainder;
((gridbaglayout)getlayout()).setconstraints(btnclose,gbc);
add(btnclose);
gbc.gridwidth=gridbagconstraints.remainder;
gbc.fill = gridbagconstraints.horizontal;
((gridbaglayout)getlayout()).setconstraints(lsarea,gbc);
add(lsarea);
}
public boolean connect(string hostname, string uid,string pwd)
{
this.hostname = hostname;
lblprompt.settext(“正在连接,请等待…..”);
try{
aftp =new ftpclient(hostname);
aftp.login(uid,pwd);
aftp.binary();
showfilecontents();
}
catch(ftploginexception e){
a=”无权限与主机:”+hostname+”连接!”;
lblprompt.settext(a);
return false;
}
catch (ioexception e){
a=”连接主机:”+hostname+”失败!”;
lblprompt.settext(a);
return false;
}
catch(securityexception e)
{
a=”无权限与主机:”+hostname+”连接!”;
lblprompt.settext(a);
return false;
}
lblprompt.settext(“连接主机:”+hostname+”成功!”);
return true;
}
public void stop()
{
try
{
aftp.closeserver();
}
catch(ioexception e)
{
}
}
public void paint(graphics g){
}
public boolean action(event evt,object obj)
{
if (evt.target == btnconn)
{
lblprompt.settext(“正在连接,请等待…..”);
if (connect(txthost.gettext(),txtuid.gettext(),txtpwd.gettext()))
{
btnconn.setenabled(false);
btnclose.setenabled(true);
}
return true;
}
if (evt.target == btnclose)
{
stop();
btnconn.enable(true);
btnclose.enable(false);
lblprompt.settext(“与主机”+hostname+”连接已断开!”);
return true;
}
return super.action(evt,obj);
}
public boolean sendfile(string filepathname){
boolean result=true;
if (aftp != null)
{
lblprompt.settext(“正在粘贴文件,请耐心等待….”);
string contentperline;
try{
a=”粘贴成功!”;
string fg =new string(“\\”);
int index = filepathname.lastindexof(fg);
string filename = filepathname.substring(index+1);
file localfile ;
localfile = new file(filepathname) ;
randomaccessfile sendfile = new randomaccessfile(filepathname,”r”);
//
sendfile.seek(0);
outs = aftp.put(filename);
outputs = new dataoutputstream(outs);
while (sendfile.getfilepointer() < sendfile.length() )
{
ch = sendfile.read();
outputs.write(ch);
}
outs.close();
sendfile.close();
}
catch(ioexception e){
a = “粘贴失败!”;
result = false ;
}
lblprompt.settext(a);
showfilecontents();
}
else{
result = false;
}
return result;
}
public void showfilecontents()
{
stringbuffer buf = new stringbuffer();
lsarea.settext(“”);
try
{
ins= aftp.list();
while ((ch=ins.read())>=0){
buf.append((char)ch);
}
lsarea.appendtext(buf.tostring());
ins.close();
}
catch(ioexception e)
{
}
}
public static void main(string args[]){
frame f = new frame(“ftp client”);
f.addwindowlistener(new windowadapter(){
public void windowclosing(windowevent e){
system.exit(0);
}
});
ftpapplet ftp = new ftpapplet();
ftp.init();
ftp.start();
f.add(ftp);
f.pack();
f.setvisible(true);
}
}