1. 用java编写ftp客户端这样的网络程序需用到Java的什么知识
会socket编程就可以了
我给你个测试:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import sun.net.ftp.*;
//FTP连接与浏览
public class FtpClientDemo extends JFrame{
JTextField jtfServer; //输入Ftp服务器地址
JTextField jtfUser; //输入用户名
JPasswordField jtfPass; //输入密码
JButton jbConnect; //连接按钮
JButton jbDisconnect; //断开按钮
JTextArea jtaShowFiles; //显示服务器目录与文件
FtpClient ftpClient;
public FtpClientDemo(){
super("FTP连接与浏览"); //调用父类构造函数
jtfServer=new JTextField(13); //实例化组件
jtfUser=new JTextField(8);
jtfPass=new JPasswordField(8);
jbConnect=new JButton("连接");
jbDisconnect=new JButton("断开");
jtaShowFiles=new JTextArea();
Container container=getContentPane(); //得到容器
JPanel panel=new JPanel(); //实例化面板
panel.add(new JLabel("地址")); //增加组件到面板上
panel.add(jtfServer);
panel.add(new JLabel("用户名"));
panel.add(jtfUser);
panel.add(new JLabel("密码"));
panel.add(jtfPass);
container.add(panel,BorderLayout.NORTH); //增加组件到容器上
JScrollPane jsp=new JScrollPane(jtaShowFiles);
container.add(jsp,BorderLayout.CENTER);
panel=new JPanel();
panel.add(jbConnect);
panel.add(jbDisconnect);
container.add(panel,BorderLayout.SOUTH);
jbConnect.addActionListener(new ActionListener(){ //连接按钮事件处理
public void actionPerformed(ActionEvent ent){
connectServer(); //调用连接到服务器的方法
}
});
jbDisconnect.addActionListener(new ActionListener(){ //断开按钮事件处理
public void actionPerformed(ActionEvent ent){
disconnectServer(); //调用断开与服务器连接的方法
}
});
setSize(460,260); //设置窗口尺寸
setVisible(true); //设置窗口可视
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
}
public void connectServer(){
try{
ftpClient = new FtpClient(); //实例化FtpClient对象
String serverAddr=jtfServer.getText(); //得到服务器地址
String user=jtfUser.getText(); //得到用户名
String pass=jtfPass.getPassword().toString(); //得到密码
ftpClient.openServer(serverAddr); //连接到服务器
ftpClient.login(user,pass); //在服务器上注册
InputStream is=ftpClient.list(); //得到服务器目录与文件列表输入流
StringBuffer info=new StringBuffer(); //实例化StringBuffer对象,用于输出信息
int ch;
while ((ch=is.read())>=0){ //未读完列表,则继续
info.append((char)ch); //增加信息
}
jtaShowFiles.setText(new String(info)); //显示信息
is.close(); //关闭输入流
}
catch (IOException ex){
JOptionPane.showMessageDialog(FtpClientDemo.this,ex.getMessage()); //显示提示信息
ex.printStackTrace(); //在命令行窗口输出出错信息
}
}
public void disconnectServer(){
try{
ftpClient.closeServer(); //关闭与服务器的连接
}
catch (IOException ex){
ex.printStackTrace();
}
}
public static void main(String[] args){
new FtpClientDemo();
}
}
2. 如何用java实现ftp客户端程序
FTP 的主要操作都是基于各种命令基础之上的。常用的命令有: · 设置传输模式,它包括ASCⅡ(文本) 和BINARY 二进制模式; · 目录操作,改变或显示远程计算机的当前目录(cd、dir/ls 命令); · 连接操作,open命令用于建立同远程计算机的连接;close命令用于关闭连接; · 发送操作,put命令用于传送文件到远程计算机;mput 命令用于传送多个文件到远程计算机; · 获取操作,get命令用于接收一个文件;mget命令用于接收多个文件。 编程思路 根据FTP 的工作原理,在主函数中建立一个服务器套接字端口,等待客户端请求,一旦客户端请求被接受,服务器程序就建立一个服务器分线程,处理客户端的命令。如果客户端需要和服务器端进行文件的传输,则建立一个新的套接字连接来完成文件的操作。 编程技巧说明 http://www.jacken.com.cn/Programming/Java/2008-10-24/Java-.html
3. 如何用Java实现FTP服务器
在主函数中,完成服务器端口的侦听和服务线程的创建。我们利用一个静态字符串变量initDir 来保存服务器线程运行时所在的工作目录。服务器的初始工作目录是由程序运行时用户输入的,缺省为C盘的根目录。
具体的代码如下:
public class ftpServer extends Thread{
private Socket socketClient;
private int counter;
private static String initDir;
public static void main(String[] args){
if(args.length != 0) {
initDir = args[0];
}else{ initDir = "c:";}
int i = 1;
try{
System.out.println("ftp server started!");
//监听21号端口
ServerSocket s = new ServerSocket(21);
for(;;){
//接受客户端请求
Socket incoming = s.accept();
//创建服务线程
new ftpServer(incoming,i).start();
i++;
}
}catch(Exception e){}
}
4. Java的ftp操作方法有哪几种
FTP(File Transfer Protocol)是 Internet 上用来传送文件的协议(文件传输协议)。它是为了我们能够在 Internet 上互相传送文件而制定的的文件传送标准,规定了 Internet 上文件如何传送。也就是说,通过 FTP 协议,我们就可以跟 Internet 上的 FTP 服务器进行文件的上传(Upload)或下载(Download)等动作。
和其他 Internet 应用一样,FTP 也是依赖于客户程序/服务器关系的概念。在 Internet 上有一些网站,它们依照 FTP 协议提供服务,让网友们进行文件的存取,这些网站就是 FTP 服务器。网上的用户要连上 FTP 服务器,就要用到 FPT 的客户端软件,通常 Windows 都有“ftp”命令,这实际就是一个命令行的 FTP 客户程序,另外常用的 FTP 客户程序还有 CuteFTP、Ws_FTP、FTP Explorer等。
要连上 FTP 服务器(即“登陆”),必须要有该 FTP 服务器的帐号。如果是该服务器主机的注册客户,你将会有一个 FTP 登陆帐号和密码,就凭这个帐号密码连上该服务器。但 Internet 上有很大一部分 FTP 服务器被称为“匿名”(Anonymous)FTP 服务器。这类服务器的目的是向公众提供文件拷贝服务,因此,不要求用户事先在该服务器进行登记注册。
Anonymous(匿名文件传输)能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“anonymous”和“guest”就可有限制地访问远程主机上公开的文件。现在许多系统要求用户将Emai1地址作为口令,以便更好地对访问进行跟综。出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载(download)文件,而不允许上载(upload)文件。也就是说,用户只能从匿名FTP主机拷贝需要的文件而不能把文件拷贝到匿名FTP主机。另外,匿名FTP主机还采用了其他一些保护措施以保护自己的文件不至于被用户修改和删除,并防止计算机病毒的侵入。在具有图形用户界面的 WorldWild Web环境于1995年开始普及以前,匿名FTP一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名PTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息,数据和软件。 人们只要知道特定信息资源的主机地址, 就可以用匿名FTP登录获取所需的信息资料。虽然目前使用WWW环境已取代匿名FTP成为最主要的信息查询方式,但是匿名FTP仍是 Internet上传输分发软件的一种基本方法
5. Java怎么均衡访问多台ftp服务器
多次需要把文件上传到单独的服务器,而程序是在单独的服务器上部署的,在进行文件操作的时候就需要跨服务器进行操作包括:文件上传、文件下载、文件删除等。跨服务器文件操作一般是需要FTP协议和SFTP协议两种,现在就通过Java实现FTP协议的文件上传。要实现FTP操作文件需要引入jar包: commons-net-1.4.1.jar
参考资料来源:网络贴吧
6. java编写FTP服务器软件(非客户端)实现一FTP服务器,能列出/更改目录,上下传文件,显示文件列表,支持NO
您找的是GFTPServer,到YufengSoftwareStudio上去下载。或在网络上查找“GFTPServer”。全Java实现的FTP服务器,在JRE/JDK1.6环境下直接运行,傻瓜式GUI操作,非常简便。
7. java中用多线程可以提高 ftp批量上传的速度吗
可以把文件打包上传,再在线解压
8. 可否帮我写个用java编写的ftp服务器呢谢谢啦~~
Java是一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。那么Java到底有何神奇之处呢?
Java语言其实最早是诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折。但是,网络的出现改变了OAK的命运。
在Java出现以前,Internet上的信息内容都是一些乏味死板的HTML文档。这对于那些迷恋于WEB浏览的人们来说简直不可容忍。他们迫切希望能在WEB中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障。对于用户的这种要求,传统的编程语言显得无能为力,面SUN的工程师敏锐地察觉到了这一点,从1994年起,他们开始将OAK技术应用于WEB上,并且开发出了HotJava的第一个版本。当SUN公司1995年正式以Java这个名字推出的时候,几乎所有的WEB开发人员都想到:噢,这正是我想要的。于是Java成了一颗耀眼的明星,丑小鸭一下了变成了白天鹅。
Java的开发环境有不同的版本,如sun公司的Java Development Kit, 简称JDK。后来微软公司推出了支持Java规范的Microsoft Visual J++ Java开发环境,简称 VJ++。
[编辑本段]Java名称的由来
说起Java这个名称是怎么来的,在世界上还流传着不同版本的传说。
1.咖啡说
1995年,SUN公司和好莱坞准备开展一个技术交流会,皆以宣传公司的产品。James Gosling带着他的系统来到了技术交流会。但他不能用OAK这个名字了。OAK已经被一家半导体公司注册了,并且注册了好多领域,只能换名。James Gosling四处观望寻找灵感,他看到了一个泡咖啡的杯子,杯子上印着Java,James Gosling就把这种语言改名为Java。
2.度假说
1994年6、7月间,在经历了一场历时三天的头脑风暴的讨论后,Green团队决定再一次改变了努力的目标,这次他们决定将该技术应用于万维网。他们认为随着Mosaic浏览器的到来,因特网正在向同样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。此时Green小组组员正在在印度尼西亚爪哇岛(Java)度假时,于是他们把Oak改名为Java。
3.简写说
Java命名来源于开发人员名字的组合:James Gosling、Arthur Van Hoff和Andy Bechtolsheim首字母的缩写。
4.头脑风暴说
关于Java命名的由来,James Gosling是曾经这样回答过Jonathan Schwartz,原文如下:
From: James Gosling
Date: August 24, 2007 8:16:58 PM PDT
To: Jonathan Schwartz
Subject: How was Java named?
The story goes like this:
We needed a name. We had been using "oak" (which was selected essentially randomly by me), and while the team had grown attached to it, the trademark lawyers ruled it out. We had lots of email debates about names, but nothing got resolved. We ended up in the awkward position where the #1 thing stopping us from shipping was the name.
Our marketing lead knew someone who was a "naming consultant" (I don't remember his name, but he was great). We could neither afford the price nor the time of a conventional proct naming process. He agreed to do something rather odd, but effective and quick: he acted as a facilitator at a meeting where about a dozen of us locked ourselves in a room for an afternoon. He started asking us questions like "How does this thing make you feel?" (Excited!) "What else makes you feel that way?" (Java!) We ended up with a board covered with essentially random words. Then he put us through a sorting process where we ended up with a ranking of the names. We ended up with a dozen name candidates and sent them off to the lawyers: they worked down the list until they hit one that cleared their search. "Java" was the fourth name on the list. The first name on the list was "Silk", which I hated but everyone else liked. My favorite was "Lyric", the third one on the list, but it didn't pass the lawyers test. I don't remember what the other candidate names where.
So, who named Java? Marketing organized the meeting, the consultant ran it, and a whole pile of us did a lot of yelling out of random words. I'm honestly not real sure who said "Java" first, but I'm pretty sure it was Mark Opperman.
There certainly wasn't any brilliant marketing mind who went through a coherent thought process.
中文翻译如下:
我们需要一个名字。我们已经使用了oak(那是我随机挑选的),然而当开发团队接触它的时候,这个商标已经被律师排除了。我们收到许多关于命名争论的电子邮件,但是问题没有解决。我们需要结束这种棘手的处境,阻挠我们前进的首要问题就是这命名。
我们市场部领导了解到某人是“命名顾问”(我不记得他的名字了,但是他是很棒)。我们既不可能提供金钱也不可能提供时间用于常规产品的命名过程。他同意做个临时的事,但是要高效和快捷:一天下午,我们大概十二个人将自己锁在一个房间内,他在会上充当一个主持人。他让我们写一些名称来做一个挑选。我们最终写了十二个候选名称,并且将其送达给律师团审阅。律师团看了列表,选定了能排出其它名称的候选项。“Java”是列表里的第四个名称。列表里的第一个名称是“Silk”,那是我讨厌但是其他人喜欢的名称。我最喜欢的是列表里的第三个名称“Lyric”,但是它没有通过律师团的审核。我不记得其它候选名称了。
为什么命名Java呢?市场部组织了一个会议,顾问提名,我们全体人员喊出随机的词语。说实话,我真的不确定谁最先说“Java”,但是我有很有把握说这人是Mark Opperman。
确实不存在任何杰出的市场理念能够通过一致的认可。
[编辑本段]Java的特点
1.平台无关性
平台无关性是指Java能运行于不同的平台。Java引进虚拟机 原理,并运行于虚拟机,实现不同平台的Java接口之间。使用Java编写的程序能在世界范围内共享。Java的数据类型与 机器无关,Java虚拟机(Java Virtual Machine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能, 提供于不同平台的接口的。
2.安全性
Java的编程类似C++,学习过C++的读者将很快掌握Java的精髓。Java舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。Java对程序提供了安全管理器,防止程序的非法访问。
3.面向对象
Java吸取了C++面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用上。Java提供了众多的一般对象的类,通过继承即可使用父类的方法。在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类。
4.分布式
Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。
5.健壮性
Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自己操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能,这些功能特征大大提高了开发Java应用程序的周期。并且Java还提供了Null指针检测、数组边界检测、异常出口、Byte code校验等功能。
[编辑本段]Java与C/C++语言
Java提供了一个功能强大语言的所有功能,但几乎没有一点含混特征。C++安全性不好,但C和C++被大家接受,所以Java设计成C++形式,让大家很容易学习。Java去掉了C++语言中的指针运算、结构、typedefs、#define、需要释放内存等功能,减少了平常出错的50%,让Java的语言功能很精炼。而且,因为Java很小,所以整个解释器只需215K的RAM,并增加了一些很有用的功能,如自动收集碎片。Java实现了C++的基本面象对象技术并有一些增强,(为了语言简单,删除了一些功能)。Java处理数据方式和用对象接口处理对象数据方式一样。
Java与C和C++直接相关.Java继承了C的语法,Java 的对象模型是从C++改编而来的.现代程序设计始于C,而后过渡到C++,现在则是JAVA.通过大量的继承,JAVA提供了一个强大的,可以更好地利用已有成果的,逻辑一致的程序设计环境,并且增加了在线环境需求的新功能.或许最重要的一点在于,由于它们的相似性,C,C++和JAVA为专业程序员定义了一个统一的概念架构.程序员从其中的一种语言转到另一种语言时,不会遇到太大的困难.
[编辑本段]Java与Internet
我们知道,早先的www仅可以传送文本和图片,Java的出现实现了互动的页面,是一次伟大的革命。Java并不是为Internet、www而设计的,它也可以用来编写独立的应用程序。Java是一种面向对象语言,Java语言类似于C++语言,所以已熟练掌握C++语言的编程人员,再学习Java语言就容易得多!Java程序需要编译,它被放置在Internet服务器上,当用户访问服务器时,Java程序被下载到本地的用户机上,由浏览器解释运行。实际上有两种Java程序:一种Java应用程序是一个完整的程序,如Web浏览器。另一种Java小应用程序是运行于Web浏览器中的一个程序。Java程序和它的浏览器HotJava,提供了可让你的浏览器运行程序的方法。你能从你的浏览器里直接播放声音,你还能播放页面里的动画,Java还能告诉你的浏览器怎样处理新的类型文件。当我们能在2400 baud线上传输视频图象时,HotJava将能显示这些视频。
[编辑本段]Java与电子商务
电子商务是当今的热门话题,然而传统的编程语言难以胜任电子商务系统,电子商务要求程序代码具有基本的要求:安全、可靠、同时要求能与运行于不同平台的机器的全世界客户开展业务。Java以其强安全性、平台无关性、硬件结构无关性、语言简洁同时面向对象,在网络编程语言中占据无可比拟的优势,成为实现电子商务系统的首选语言。
9. 怎样学习java
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
学习java其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编
程思想。每一种语言的程序设计思想大同小异,只是一些由语言特性的而带来的细微差别
,比如Java中的Interface,你几乎在以前的学习中没有碰到过。以下我仔细给你说几点
1。我们必须明确一个大方向,也就是说现在面向对象的编程范畴。尽管人工智能曾经有
所浪潮(看看Borland为什么有TurboPRolog),但未来5-10年工业界广泛承认并接受的
将是面向对象式的编程。
2。工业界目前最流行的面向对象编程语言就是C++和Java。所以基本上锁定这两个方向就
可以了。而且完全可以同时把握。
3。把握Java的精华特性而且一定要知道为什么。比如,Interface和multi-thread。用
interface是更好的多继续的模型,而多线程则是设计到语言一级的重要特性。要完全理
解interface是为什么,用多线程又有几种常用的编程模型。
4。理解了语言的特性是为什么了之后,就可以试着上升到设计这个层次,究竟学习语言
是要用的。目前比较好的开发模式是采用自定向下的面向对象的设计,加上MVC的模式(
你可以看一下我介绍的关于MVC的内容)。首先要找出最顶层的对象(这往往是最难的)
,然后一层一层往下递归
,记住每次应符合7+/-2的原则,因为我们人的短记忆就是这样。一般有图形用户界面的
应从界面开始设计。
5。有了基本设计模型后,可以学一些设计模式(Design Pattern)。这是目前证实很有效
的。比如体系结构模式(Layering分层,Pipe/Filter管道或过滤器),设计模式(有很
多,比如对象池Object
Pool、缓冲池Cache等),编程模式(比如Copy-on-Write)。懂了这些模式之后,就会对
系统的整体结构有很好的把握,而学术上也有倾向一个系统完全可以由各种模式组合而成
。前面提到的MT实际上就有好几种模式,把握后就不用自己花很多时间去试了。另外一个
很重要的领域就是并行
和分布式计算领域,大概有20种左右。
6。接下来就不能纸上谈兵了,最好的方法其实是实践。一般教科书上的例子并不能算是
实践,只能算是让你把握语言特性用的。而提倡做实际的Project也不是太好,因为你还
没有熟练的能力去综合各种技术,这样只能是你自己越来越迷糊。我认为比较好的方法是
找一些比较经典的例子,
每个例子比较集中一种编程思想而设计的
7。结合前面学到的设计模式你就可以很好的理解这些经典的例子。并且自己可以用他来 实现一些简单的系统。假如可以对他进行进一步的修改,找出你觉得可以提高性能的地方 加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
8。好象以上谈的跟Java没什么关系,其实我们早就应该从单纯的学习语言到真正的学习 好编程的领域。学习技术是没有止境的,你学习第一种语言可能要半年时间,以后每种语言都不应该超过两个月,否则你会觉得学习语言是包袱,是痛苦我们的学习,我们的学习最重要的是实战软件的开发,所以建议在刚刚开始学习的时候,多找一些项目来研究,很多学校都有免费的课程,一般都会有提供小项目实战的,如果你们没有找不到,可以加我建立的一个交流群先加上670另外还有025最后加上447 这样你就可以找到组织,在群里大家都会提供很多小项目帮助大家成长的,你不来我们没有损失,损失的是你。
9。学习是为了用的,是为了让你的程序产生价值典
10. java FTP上传 , 服务器卡死
卡死?赶紧换一台配置更好的服务器吧。。。。做为一个服务器商的建议