当前位置:首页 » 文件管理 » javaftp多线程

javaftp多线程

发布时间: 2023-05-23 02:54:47

A. java中用多线程可以提高 ftp批量上传的速度吗

可以把文件打包上传,再在线解压

B. 2003搭建多线程FTP下载服务器

ADSL是一种非对称的DSL技术,所谓非对称是指用户线的上行速率与下行速率不同,上行速率低,下行速率高,ADSL 在一对铜线上支持上行速率512Kbps~1Mbps,下行速率1Mbps~8Mbps,有效传输距离在3~5公里范围以内。
你要提高外网下载速度,只能更换成小区宽带,而后使用动态域名的方式。

C. 用Java实现FTP服务器解决方案

FTP 命令 FTP 的主要操作都是基于各种命令基础之上的 常用的命令有 · 设置传输模式 它包括ASCⅡ(文本) 和BINARY 二进制模式;· 目录操作 改变或显示远程计算机的当前目录(cd dir/ls 命令);· 连接操作 open命令用于建立同远程计算机的连接 close命令用于关闭连接;· 发送操作 put命令用于传送文件到远程计算机 mput 命令用于传送多滚隐个文件到远程计算机;· 获取操作 get命令用于接收一个文件 mget命令用于接收多个文件 编程思路 根据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 != ) {initDir = args[ ];}else{ initDir = c: ;}int i = ;try{System out println( ftp server started! );//监听 号端口ServerSocket s = new ServerSocket( );for(;;){//接受客户端请求Socket ining = s accept();//创建服务御尺线程new ftpServer(ining i) start();i++;}}catch(Exception e){}} 线程类的设计线程类的主要设计都是在run()方法中实现 用run()方法得到客户端的套接字信息 根据套接字得到输入流和输出流 向客户端发送欢迎信息 FTP 命令的处理( ) 访问控制命令· user name(user) 和 password (pass) 命令处理代码如下 if(str startsWith( USER )){user = str substring( );user = user trim();out println( Password );}if(str startsWith( PASS ))out println( User +user+ logged in );User 命令和 Password 命令分别用来提交客户端用户输入的用户名和口令 · CWD (CHANGE WORKING DIRECTORY) 命令处理代码如下 if(str startsWith( CWD )){String str = str substring( );dir = dir+ / +str trim();out println( CWD mand succesful );}该命令改变工作目录到用户指定的目录 · CDUP (CHANGE TO PARENT DIRECTORY) 命令处理代码如下 if(str startsWith( CDUP )){int n = dir lastIndexOf( / );dir = dir substring( n);out println( CWD mand succesful );}该命令改变当前目录为上一层目录大拆厅 · QUIT命令处理代码如下 if(str startsWith( QUIT )) {out println( GOOD BYE );done = true;}该命令退出及关闭与服务器的连接 输出GOOD BYE ( ) 传输参数命令· Port命令处理代码如下 if(str startsWith( PORT )) {out println( PORT mand successful );int i = str length() ;int j = str lastIndexOf( );int k = str lastIndexOf( j );String str str ;str = ;str = ;for(int l=k+ ;lstr = str + str charAt(l);}for(int l=j+ ;l<=i;l++){str = str + str charAt(l);}tempPort = Integer parseInt(str ) * * +Integer parseInt(str );}使用该命令时 客户端必须发送客户端用于接收数据的 位IP 地址和 位 的TCP 端口号 这些信息以 位为一组 使用十进制传输 中间用逗号隔开 · TYPE命令处理代码如下 if(str startsWith( TYPE )){out println( type set );}TYPE 命令用来完成类型设置 ( ) FTP 服务命令· RETR (RETEIEVE) 和 STORE (STORE)命令处理的代码if(str startsWith( RETR )){out println( Binary data connection );str = str substring( );str = str trim();RandomAccessFile outFile = newRandomAccessFile(dir+ / +str r );Socket tempSocket = new Socket(host tempPort);OutputStream outSocket = tempSocket getOutputStream();byte byteBuffer[]= new byte[ ];int amount;try{while((amount = outFile read(byteBuffer)) != ){outSocket write(byteBuffer amount);}outSocket close();out println( transfer plete );outFile close();tempSocket close();}catch(IOException e){}}if(str startsWith( STOR )){out println( Binary data connection );str = str substring( );str = str trim();RandomAccessFile inFile = newRandomAccessFile(dir+ / +str rw );Socket tempSocket = new Socket(host tempPort);InputStream inSocket = tempSocket getInputStream();byte byteBuffer[] = new byte[ ];int amount;try{while((amount =inSocket read(byteBuffer) )!= ){inFile write(byteBuffer amount);}inSocket close();out println( transfer plete );inFile close();tempSocket close();}catch(IOException e){}}文件传输命令包括从服务器中获得文件RETR和向服务器中发送文件STOR 这两个命令的处理非常类似 处理RETR命令时 首先得到用户要获得的文件的名称 根据名称创建一个文件输入流 然后和客户端建立临时套接字连接 并得到一个输出流 随后 将文件输入流中的数据读出并借助于套接字输出流发送到客户端 传输完毕以后 关闭流和临时套接字 STOR 命令的处理也是同样的过程 只是方向正好相反 · DELE (DELETE)命令处理代码如下 if(str startsWith( DELE )){str = str substring( );str = str trim();File file = new File(dir str);boolean del = file delete();out println( delete mand successful );}DELE 命令用于删除服务器上的指定文件 · LIST命令处理代码如下 if(str startsWith( LIST )) {try{out println( ASCII data );Socket tempSocket = new Socket(host tempPort);PrintWriter out = new PrintWriter(tempSocket getOutputStream() true);File file = new File(dir);String[] dirStructure = new String[ ];dirStructure= file list();String strType= ;for(int i= ;iif( dirStructure[i] indexOf( ) == ) { strType = d ;}else{strType = ;}out println(strType+dirStructure[i]);}tempSocket close();out println( transfer plete );}catch(IOException e){}LIST 命令用于向客户端返回服务器中工作目录下的目录结构 包括文件和目录的列表 处理这个命令时 先创建一个临时的套接字向客户端发送目录信息 这个套接字的目的端口号缺省为 然后为当前工作目录创建File 对象 利用该对象的list()方法得到一个包含该目录下所有文件和子目录名称的字符串数组 然后根据名称中是否含有文件名中特有的 来区别目录和文件 最后 将得到的名称数组通过临时套接字发送到客户端 lishixin/Article/program/Java/JSP/201311/19211

D. Java什么情况使用多线程

单线程程序的执行时一步一步的走,第一步完成了,才开始做第二步。举个例子,我的一个程序的目的是查询一张表的所有数据用java的窗体将数据展示出来,没用多线程的话,我会先查数据,必须在查完之后,在渲染窗体,打开这个窗体界面。假如数据量大的话,我运行程序了几分钟都没什么反应。 这时我可以开一条线程去查询数据,打开窗体,和查询数据同时进行,这样做的话增强利用率,节约时间。不用多线程的话,程序必定会先执行完一个步骤才会去执行下一步

如图

E. ftp可否实现多线程上传

没有FTP软件可以满足你的要求。因为FTP协议里没有给你多线程上传的办法。

F. C#多线程ftp下载的实现(java也可,关键是思路)

参考答案:读书之法,在循序而渐进,熟读而精思。——朱熹

G. java如何实现基于http和ftp多线程下载工具...

要访问网络资源就要去了解你要访问的网络资源所使用的协议。一般来说我们所使用的协议都是公开式的协议,比如http协议,它在数据的前面部分先设置一些信息来说明它所发送的数据的大小,文件类型等等。而多线程的实现原理就是先从http协议中获取要下载的资源的资源大小,然后再分多个线程从不同的起点跟终点来分段下载资源。ftp资源的道理也是一样。当然我并不是网络方面的专家,对网络我也不懂。以后只是我个人见解。
以下是给你找的一个java实现的http多线程下载。你看看吧
http://shazi.javaeye.com/blog/99132

H. JAVA的技术特点是什么

JAVA的技术特点是什么?

Java由美国SUN公司(被oracle公司收购)发明于1995年,是目前业界应用最广泛、使用人数最多的语言,连续多年排名世界第一,可以称之为“计算机语言界的英语”。

那么Java这么高的评价它的特点有哪些,下面我来为题主解答:

一、跨平台/可移植性

这是Java的核心优势。Java在设计时就很注重移植和跨平台性。比如:Java的int永远都是32位。不像C++可能是16,32,可能是根据编译器厂商规定的变化。这样的话程序的移植就会非常麻烦。

Java首先利用文本编辑器编写 Java源程序,源文件的后缀名为.java;再利用编译器(javac)将源程序编译成字节码文件,字节码文件的后缀名为.class; 最后利用虚拟机(解释器,java)解释执行。如下图所示:

二、安全性

Java适合于网络/分布式环境,为了达到这个目标,在安全性方面投入了很大的精力,使Java可以很容易构建防病毒,防篡改的系统。比如Java取消了强大但又危险的指针。由于指针可进行移动运算,指针可随便指向一个内存区域,而不管这个区域是否可用,这样做是危险的。

三、面向对象

面向对象是一种程序设计技术,非常适合大型软件的设计和开发。由于C++为了照顾大量C语言使用者而兼容了C,使得自身仅仅成为了带类的C语言,多少影响了其面向对象的彻底性!Java则是完全的面向对象语言。

四、简单性

Java就是C++语法的简化版,我们也可以将Java称之为“C++-”。跟我念“C加加减”,指的就是将C++的一些内容去掉;比如:头文件,指针运算,结构,联合,操作符重载,虚基类等等。同时,由于语法基于C语言,因此学习起来完全不费力。

五、高性能

Java最初发展阶段,总是被人诟病“性能低”;客观上,高级语言运行效率总是低于低级语言的,这个无法避免。Java语言本身发展中通过虚拟机的优化提升了几十倍运行效率。比如,通过JIT(JUST IN TIME)即时编译技术提高运行效率。 将一些“热点”字节码编译成本地机器码,并将结果缓存起来,在需要的时候重新调用。这样的话,使Java程序的执行效率大大提高,某些代码甚至接近C++的效率。

因此,Java低性能的短腿,已经被完全解决了。业界发展上,我们也看到很多C++应用转到Java开发,很多C++程序员转型为Java程序员。

六、分布式

Java是为Internet的分布式环境设计的,因为它能够处理TCP/IP协议。事实上,通过URL访问一个网络资源和访问本地文件是一样简单的。Java还支持远程方法调用(RMI,Remote Method Invocation),使程序能够通过网络调用方法。

七、多线程

多线程的使用可以带来更好的交互响应和实时行为。 Java多线程的简单性是Java成为主流服务器端开发语言的主要原因之一。

八、健壮性

Java是一种健壮的语言,吸收了C/C++ 语言的优点,但去掉了其影响程序健壮性的部分(如:指针、内存的申请与释放等)。Java程序不可能造成计算机崩溃。即使Java程序也可能有错误。如果出现某种出乎意料之事,程序也不会崩溃,而是把该异常抛出,再通过异常处理机制加以处理。

以上几种特性你了解到啦吗? 记得给个赞!

当然这些还没完,Java除啦这些特性还有一些其他的特点我也来给你讲一讲!!

1.java的风格类似C++,从某种意义上讲,java是C++的一个变种。但是java摒弃了C、C++中的容易引发错误和难以理解的指针,结构,以及内存管理等;

2.java是一种强类型的语言,比C/C++检查还要严格,java区分大小写字母;

3.java禁止非法访问内存,因为java没有指针,内存的申请和释放;

4.对于不同的操作系统,会有不同的java虚拟机,这也就决定了java的可移植性;

5.java提供了自动垃圾回收机制gc,有效避免了C、C++的内存泄漏问题;

记得给个赞!

I. java中用多线程可以提高 ftp批量上传的速度吗

在带宽足够的情况,多线程各上传同的文件,是可以的。。。。。。。

热点内容
家庭配置怎么合理 发布:2025-02-09 01:36:14 浏览:807
头条军事源码 发布:2025-02-09 01:31:53 浏览:997
androidintent视频 发布:2025-02-09 01:31:43 浏览:858
欧姆龙plc密码如何设置 发布:2025-02-09 01:24:31 浏览:687
php支持jpeg 发布:2025-02-09 01:24:22 浏览:803
反编译去注册码 发布:2025-02-09 01:19:48 浏览:887
安卓如何查找旧密码 发布:2025-02-09 01:17:21 浏览:418
hadoop云存储 发布:2025-02-09 01:02:49 浏览:453
儿童编程网站推荐 发布:2025-02-09 01:02:48 浏览:673
u盘文件夹无法显示 发布:2025-02-09 01:02:15 浏览:508