java 传送文件_JAVA 传输文件

展开全部

//以前写的一个文件传输的小程序,有客户端和服e5a48de588b63231313335323631343130323136353331333238653938务器端两部分,服务器可//以一直运行,客户端传输完一个后退出,当然你也可以根据你的需要改。

//服务器端可以支持多个客户端同时上传,用到了多线程

/**

* 文件传输,客户端

* @aurth anyx

*/

//package per.anyx.ftp;

import java.net.*;

import java.io.*;

public class FtpClient{

public static void main(String[] args){

if(args.length != 3){

System.out.println("Usage: FtpClient host_add host_port src_file");

System.exit(0);

}

File file = new File(args[2]);

if(!file.exists() || !file.isFile()){

System.out.println("File \"" + args[2] + "\" does not exist or is not a normal file.");

System.exit(0);

}

Socket s = null;

FileInputStream in = null;

OutputStream out = null;

try{

s = new Socket(args[0], Integer.parseInt(args[1]));

in = new FileInputStream(file);

out = s.getOutputStream();

byte[] buffer = new byte[1024*8];

int len = -1;

System.out.println("File tansfer statr...");

while((len=in.read(buffer)) != -1){

out.write(buffer, 0, len);

}

System.out.println("File tansfer complete...");

}catch(Exception e){

System.out.println("Error: " + e.getMessage());

System.exit(1);

}finally{

try{

if(in != null) in.close();

if(out != null) out.close();

if(s != null) s.close();

}catch(Exception e){}

}

}

}

/**

* 文件传输,服务器端

* @aurth anyx

*/

//package per.anyx.ftp;

import java.net.*;

import java.io.*;

public class FtpServer{

public static void main(String[] args){

if(args.length != 1){

System.out.println("Usage: FtpServer server_port");

System.exit(0);

}

ServerSocket ss = null;

try{

ss = new ServerSocket(Integer.parseInt(args[0]));

System.out.println("FtpServer start on port ..." + args[0]);

while(true){

Socket s = ss.accept();

new FtpThread(s).start();

System.out.println(s.getInetAddress().getHostAddress() + " connected.");

}

}catch(Exception e){

System.out.println("Error: " + e.getMessage());

}finally{

try{

if(ss != null) ss.close();

}catch(Exception e){}

}

}

}

class FtpThread extends Thread{

Socket s;

long fileName = 0;

public FtpThread(Socket s){

this.s = s;

}

public void run(){

FileOutputStream out = null;

InputStream in = null;

File file = null;

do{

file = new File("" + (fileName++));

}while(file.exists());

try{

out = new FileOutputStream(file);

in = s.getInputStream();

byte[] buffer = new byte[1024*8];

int len = -1;

while((len=in.read(buffer)) != -1){

out.write(buffer, 0, len);

}

}catch(Exception e){

System.out.println("Error: " + e.getMessage());

}finally{

try{

if(in != null) in.close();

if(out != null) out.close();

if(s != null) s.close();

System.out.println(s.getInetAddress().getHostAddress() + " connect closed..");

}catch(Exception e){}

}

}

}

参考资料:

自己写的

本回答由提问者推荐

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值