java文件传输的目的_java文件传输

package com.vista.Util;

import java.io.IOException;

import java.net.ServerSocket;publicclassFileReceiver  extends Thread

{privateServerSocket s=null;privateintFILE_PORT ;//文件传输的监听端口privateUser user=null;publicFileReceiver(User us)

{this.FILE_PORT=us.getUdpPort();//设置文件端口this.user=us;

}publicvoidrun()

{try{

s=newServerSocket(FILE_PORT);

System.out.println("用户端开始监听:"+s);while(true)

{

java.net.Socket  socket=s.accept();

System.out.println("连接接受"+socket);newFileReceiverThread(user,socket);

}

}catch(IOException e)

{

e.printStackTrace();

}catch(java.lang.Exception ex)

{

System.err.println(ex.getMessage().toString());

ex.printStackTrace();

}finally{try{

s.close();

}catch(IOException e)

{//TODO Auto-generated catch blocke.printStackTrace();

}

}

}

}

FileReceiverThread.java

package com.vista.Util;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.net.Socket;

import java.util.Date;

import com.vista.Form.SingleChatForm;publicclassFileReceiverThread extends Thread

{privateSingleChatForm chatForm=null;privatejava.net.Socket socket=null;privatejava.io.InputStreamin=null;//从客户端读数据的privatejava.io.PrintWriterout=null;//向客户端写数据privateString serverMsg;privateUser sender=null;privateUser receiver=null;privatecom.vista.Util.Sender MsgSender=null;publicFileReceiverThread (User us,Socket socket)

{this.receiver=us;try{this.socket=socket;this.in=this.socket.getInputStream();this.out=newPrintWriter(newBufferedWriter(newOutputStreamWriter(this.socket.getOutputStream())),true);

}catch(IOException e)

{//TODO Auto-generated catch blocke.printStackTrace();

}this.start();//启动线程}publicvoidrun()

{

String info="";try{while(true)

{//第一个参数为命令Date befor=newDate();bytecmd[]=newbyte[128];intb=0;while(b

{

b+=in.read(cmd, b, cmd.length-b);

}intends=0;for(inti=0;i

{if(cmd[i]==-0)

{

ends=i;break;

}

}

String cmds=newString(cmd,0,ends);if("cp".equals(cmds))

{byte[] filename=newbyte[256];

b=0;while(b

{

b+=in.read(filename, b, filename.length-b);

}

ends=0;for(inti=0;i

{if(filename[i]==-0)

{

ends=i;break;

}

}

String filenames=newString(filename,0,ends);

filenames="F://"+filenames;

File fileout=newFile(filenames);FileOutputStream fos=newFileOutputStream(fileout);byte[] filesize=newbyte[64];

b=0;while(b

{

b+=in.read(filesize, b, filesize.length-b);

}

ends=0;for(inti=0;i

{if(filesize[i]==-0)

{

ends=i;break;

}

}

String filesizes=newString(filesize,0,ends);

System.out.println("filesize:"+filesizes);intta=Integer.parseInt(filesizes);byte[] buf=newbyte[1024*10];while(true)

{if(ta==0)

{break;

}intlen=ta;if(len>buf.length)

{

len=buf.length;

}intrlen=in.read(buf,0, len);ta-=rlen;if(rlen>0)

{

fos.write(buf,0,rlen);

fos.flush();

}else{break;

}

}

Date after=newDate();longdiff=after.getTime()-befor.getTime();

diff/=1000;info="传输完成!文件已经保存到:"+filenames+",文件大小:"+filesizes+"字节,"+"共用时间:"+diff+"秒";intresult=javax.swing.JOptionPane.showConfirmDialog(null, info,"文件传输",  javax.swing.JOptionPane.YES_NO_OPTION, javax.swing.JOptionPane.INFORMATION_MESSAGE);

fos.close();break;

}

}//socket.close();}catch(Exception e)

{

e.printStackTrace();

}try{this.socket.close();

}catch(IOException ex1)

{

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值