FTP客户端软件的设计与实现(5)

2019-06-02 13:15

bconnect.setText(\连接\ bconnect.addActionListener(new mainView_bconnect_actionAdapter(this)); bdisconnect.setText(\断开连接\ bdisconnect.addActionListener(new mainView_bdisconnect_actionAdapter(this)); lPane.setBackground(Color.gray); lPane.setLayout(borderLayout1); sPane.setBackground(Color.gray); sPane.setLayout(borderLayout2); bDownload.setText(\下载\ bDownload.addActionListener(new mainView_bDownload_actionAdapter(this)); remoteList.addMouseListener(new mainView_remoteList_mouseAdapter(this));

contentPane.add(jPanel1, new XYConstraints(5, 8, 265, 349)); jPanel1.add(jLabel1, new XYConstraints(7, 27, 43, 17)); jPanel1.add(server, new XYConstraints(69, 13, 170, 30)); jPanel1.add(jLabel2, new XYConstraints(7, 69, 46, 18)); jPanel1.add(jLabel3, new XYConstraints(7, 109, 49, 21)); jPanel1.add(jLabel4, new XYConstraints(7, 149, -1, 18)); jPanel1.add(port, new XYConstraints(69, 58, 170, 30)); jPanel1.add(user, new XYConstraints(69, 104, 170, 30)); jPanel1.add(pw, new XYConstraints(69, 148, 170, 30)); jPanel1.add(bdisconnect, new XYConstraints(142, 267, -1, -1)); jPanel1.add(bconnect, new XYConstraints(24, 267, 83, -1)); sPane.add(jScrollPane2, java.awt.BorderLayout.CENTER); jScrollPane2.getViewport().add(statusList);

contentPane.add(bDownload, new XYConstraints(24, 398, 212, 78)); contentPane.add(lPane, new XYConstraints(290, 53, 467, 203)); lPane.add(jScrollPane1, java.awt.BorderLayout.CENTER); contentPane.add(sPane, new XYConstraints(290, 327, 467, 198)); contentPane.add(jLabel6, new XYConstraints(287, 301, 118, 27)); contentPane.add(jLabel5, new XYConstraints(291, 23, 133, 28));

jScrollPane1.getViewport().add(remoteList);

remoteList.setModel(new javax.swing.AbstractListModel() {

String[] strings = { \ 欢迎使用 tFTPClient!\用法:\在左边输入相应信息后按 【连接】按钮,连接FTP服务器\

public int getSize() { return strings.length; }

public Object getElementAt(int i) { return strings[i]; } });

}

登录验证服务器代码:

private void connectHandler(java.awt.event.ActionEvent evt) { String anonymous = \ String anpassword = \ String dMessage = null;

String dTitle = \

int dType = JOptionPane.ERROR_MESSAGE;

if(evt.getSource() == bconnect){

if(server.getText().length() == 0){

dMessage = \请输入FTP服务器的Host/IP地址\

JOptionPane.showMessageDialog( null,dMessage,dTitle,dType);

return; }

if(user.getText().length() == 0 && !jCheckBox2.isSelected()){ dMessage = \请输入用户帐号\

JOptionPane.showMessageDialog( null,dMessage,dTitle,dType);

return;

}

datsktsvr = new ServerSocket(0);// 获得一个随机端口 port = datsktsvr.getLocalPort(); // 设置 host&port

StringBuilder cmd = new StringBuilder(\

cmd.append(ctlskt.getLocalAddress().getHostAddress()); //返回InetAddress 对象的“X.Y.W.Z”形式的IP地址

for (int i = 0; i < cmd.length(); i++) {

// 把 202.168.255.255 形式 转换成 202,168,255,255 形式

if ('.' == cmd.charAt(i)) cmd.setCharAt(i, ','); }

// port = secondlast*256 + last cmd.append(\

cmd.append(Integer.toString(port / 256)); cmd.append(\

cmd.append(Integer.toString(port & 0xFF)); status = sendCmd(cmd.toString()); if (status != 200) // 200 命令正确 return -1;

status = sendCmd(datCmd); // 等待远程服务器的连接 datskt = datsktsvr.accept(); }

return 0;

界面与登录图:

图5 登录实现界面图

4.3 浏览程序

我们利用FtpClient控件可以实现FTP客户端应用程序的浏览功能,浏览功能的实现程序由浏览服务器端文件和浏览本地文件两部分组成。

4.3.1浏览服务器端目录程序

当连接登录成功之后,可使用FtpClient控件的List()方法执行FTP服务器端上的目录浏览(List)功能,以取得FTP服务器默认的目录内容。一般List方法会列出FTP端目录与文件的详细内容,包括创建文件日期,文件大小,目录与文件的名称等相关信息。当然,FTP服务器端必须开放目录读取的权限,以允许连接登录及浏览目录,否则,Connect方法会执行失败。而这个方法执行后的结果是TelnetInputStream数据流,本系统要把它显示在一个列表框中,还需要进行分解操作。下面是对列表框进行操作的程序代码: */

protected FileInfo readFileInfo(String fileInfo,int system){ String[] temp = fileInfo.split(\

boolean isDir = false;

if(system == FileInfo.UNIX){

//-rwxrw-r-- 1 user group 3014 Nov 12 14:57 cwinvnc337.ESn // 0 1 2 3 4 5 6 7 8

String[] parts = new String[9]; int j = 0;

for(int i =0; i8) break;

parts[j] = temp[i]; j++; } }

if(j==9){

parts[8] = getFileName(fileInfo,52);//if the file name contains space }

//check is a dir or a file

isDir = (parts[0].charAt(0)=='d'); return new

FileInfo(FileInfo.UNIX,parts[0],parts[1],parts[2],parts[3],parts[4],parts[5]+\ }else if(system == FileInfo.DOS){

//02-23-05 09:24AM 2245 readme.ESn

// 0 1 2 3 String[] parts = new String[4]; int j = 0;

for(int i =0; i3) break;

parts[j] = temp[i]; j++; } }

if(j>3)

parts[3] = getFileName(fileInfo, 20);//unknow system //check is a dir or a file

isDir = (parts[2].equals(\ return new


FTP客户端软件的设计与实现(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高考数学艺体生百日突围专题(11)立体几何(基础篇,含答案)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: