


文件接收部分
FileReceiver.java
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->packagecom.vista.Util;
importjava.io.IOException;
importjava.net.ServerSocket;
publicclassFileReceiverextendsThread
{
privateServerSockets=null;
privateintFILE_PORT;//文件传输的监听端口
privateUseruser=null;
publicFileReceiver(Userus)
{
this.FILE_PORT=us.getUdpPort();//设置文件端口
this.user=us;
}
publicvoidrun()
{
try
{
s=newServerSocket(FILE_PORT);
System.out.println("用户端开始监听:"+s);
while(true)
{
java.net.Socketsocket=s.accept();
System.out.println("连接接受"+socket);
newFileReceiverThread(user,socket);
}
}
catch(IOExceptione)
{
e.printStackTrace();
}
catch(java.lang.Exceptionex)
{
System.err.println(ex.getMessage().toString());
ex.printStackTrace();
}
finally
{
try
{
s.close();
}
catch(IOExceptione)
{
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
}
FileReceiverThread.java
packagecom.vista.Util;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.OutputStreamWriter;
importjava.io.PrintWriter;
importjava.net.Socket;
importjava.util.Date;
importcom.vista.Form.SingleChatForm;
publicclassFileReceiverThreadextendsThread
{
privateSingleChatFormchatForm=null;
privatejava.net.Socketsocket=null;
privatejava.io.InputStreamin=null;//从客户端读数据的
privatejava.io.PrintWriterout=null;//向客户端写数据
privateStringserverMsg;
privateUsersender=null;
privateUserreceiver=null;
privatecom.vista.Util.SenderMsgSender=null;
publicFileReceiverThread(Userus,Socketsocket)
{
this.receiver=us;
try
{
this.socket=socket;
this.in=this.socket.getInputStream();
this.out=newPrintWriter(newBufferedWriter(newOutputStreamWriter(this.socket.getOutputStream())),true);
}
catch(IOExceptione)
{//TODOAuto-generatedcatchblock
e.printStackTrace();
}
this.start();//启动线程
}
publicvoidrun()
{
Stringinfo="";
try
{
while(true)
{
//第一个参数为命令
Datebefor=newDate();
bytecmd[]=newbyte[128];
intb=0;
while(b<cmd.length)
{
b+=in.read(cmd,b,cmd.length-b);
}
intends=0;
for(inti=0;i<cmd.length;i++)
{
if(cmd[i]==-0)
{
ends=i;
break;
}
}
Stringcmds=newString(cmd,0,ends);
if("cp".equals(cmds))
{
byte[]filename=newbyte[256];
b=0;
while(b<cmd.length)
{
b+=in.read(filename,b,filename.length-b);
}
ends=0;
for(inti=0;i<cmd.length;i++)
{
if(filename[i]==-0)
{
ends=i;
break;
}
}
Stringfilenames=newString(filename,0,ends);
filenames="F://"+filenames;
Filefileout=newFile(filenames);
FileOutputStreamfos=newFileOutputStream(fileout);
byte[]filesize=newbyte[64];
b=0;
while(b<filesize.length)
{
b+=in.read(filesize,b,filesize.length-b);
}
ends=0;
for(inti=0;i<filesize.length;i++)
{
if(filesize[i]==-0)
{
ends=i;
break;
}
}
Stringfilesizes=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;
}
}
Dateafter=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(Exceptione)
{
e.printStackTrace();
}
try
{
this.socket.close();
}
catch(IOExceptionex1)
{
}
}
}
文件发送线程
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->FileSender.java
packagecom.vista.Util;
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.OutputStream;
importjava.io.OutputStreamWriter;
importjava.io.PrintWriter;
importjava.net.InetAddress;
importjava.net.Socket;
importjava.net.UnknownHostException;
publicclassFileSenderextendsThread
{
privateSocketsocket=null;//客户端socket
privateOutputStreamout=null;//向服务器写数据
privateintRECEIVER_PORT=-1;//接收者端口
privateFilefileToSend=null;//要传输的文件
publicFileSender(Filefile,intReceiver_Port)
{
this.fileToSend=file;
this.RECEIVER_PORT=Receiver_Port;//设置接收方端口
try
{
this.socket=newSocket(InetAddress.getLocalHost(),RECEIVER_PORT);
out=socket.getOutputStream();//向接收者发数据的
}
catch(UnknownHostExceptione)
{
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
catch(IOExceptione)
{
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
publicvoidrun()
{
byte[]cmd=newbyte[128];
byte[]tcmd="cp".getBytes();
for(inti=0;i<tcmd.length;i++)
{
cmd[i]=tcmd[i];
}
cmd[tcmd.length]=-0;
try
{
out.write(cmd,0,cmd.length);
}
catch(IOExceptione)
{
e.printStackTrace();
}
//文件名
byte[]file=newbyte[256];
byte[]tfile=this.fileToSend.getName().getBytes();
for(inti=0;i<tfile.length;i++)
{
file[i]=tfile[i];
}
file[tfile.length]=-0;
try
{
out.write(file,0,file.length);
}
catch(IOExceptione)
{
e.printStackTrace();
}
//大小
byte[]size=newbyte[64];
byte[]tsize=(""+this.fileToSend.length()).getBytes();
for(inti=0;i<tsize.length;i++)
{
size[i]=tsize[i];
}
size[tsize.length]=-0;
try
{
out.write(size,0,size.length);
}
catch(IOExceptione)
{
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
FileInputStreamfis=null;
byte[]buf=newbyte[1024*10];
try
{
fis=newFileInputStream(this.fileToSend);
}
catch(FileNotFoundExceptione)
{
e.printStackTrace();
}
intreadsize=0;
try
{
while((readsize=fis.read(buf,0,buf.length))>0)
{
out.write(buf,0,readsize);
out.flush();
}
}
catch(IOExceptione)
{
e.printStackTrace();
}
}
}
分享到:
相关推荐
java毕业设计——java文件传输系统的设计与实现(论文+源代码).zip java毕业设计——java文件传输系统的设计与实现(论文+源代码).zip java毕业设计——java文件传输系统的设计与实现(论文+源代码).zip java毕业设计...
Java文件传输工具是一种基于Java开发的应用程序,设计用于实现基本的点对点(P2P)文件传输功能。这个工具提供了简单易用的界面,让用户能够方便地在两台计算机之间共享和移动文件。以下是对该工具核心特性和技术...
JAVA文件传输(论文+源代码) JAVA文件传输(论文+源代码) JAVA文件...JAVA文件传输(论文+源代码) JAVA文件传输(论文+源代码) JAVA文件传输(论文+源代码) JAVA文件传输(论文+源代码) JAVA文件传输(论文+源代码) JAVA文件传
JAVA文件传输(源代码).zipJAVA文件传输(源代码).zipJAVA文件传输(源代码).zipJAVA文件传输(源代码).zipJAVA文件传输(源代码).zipJAVA文件传输(...代码).zipJAVA文件传输(源代码).zipJAVA文件传输(源代码).zipJAVA文件传
Java文件传输程序是一种基于Java编程语言开发的应用,用于在计算机之间高效、可靠地移动或复制文件。本项目源码提供了一个基本的实现,支持多线程传输,这使得它能够同时处理多个文件,提高整体传输效率。然而,由于...
Java文件传输源代码是Java编程中的一个重要领域,它涉及到如何在不同的系统或网络环境中高效、安全地移动数据。在这个场景中,我们关注的是基于Java的简单、易懂且方便学习的实现方式。以下是对相关知识点的详细说明...
综上所述,这个Java文件传输项目涵盖了网络编程、文件操作、并发控制等多个核心知识点,对提升开发者的技术能力大有裨益。通过实际操作和分析源代码,不仅可以深入理解这些概念,还能提升实际问题解决能力。
Java文件传输技术是一种基于Java编程语言实现的网络数据交换方式,广泛应用于分布式系统、云存储、协同工作等场景。在“JAVA文件传输(论文+源代码).zip”中,我们可能找到一篇关于Java文件传输技术的学术论文以及...
### Java 文件传输技术详解 #### 一、概述 在Java中实现文件传输主要涉及到网络编程中的Socket编程。本文档详细介绍了如何使用Socket进行文件传输,包括客户端与服务器端的设计与实现。 #### 二、基本原理 文件...
(Java毕业设计)JAVA文件传输(Java毕业设计)JAVA文件传输(Java毕业设计)JAVA文件传输(Java毕业设计)JAVA文件传输(Java毕业设计)JAVA文件传输(Java毕业设计)JAVA文件传输(Java毕业设计)JAVA文件传输(Java毕业设计)JAVA...
#### Java文件传输的核心技术:Socket **Socket**(套接字)是网络通信的基础组件,它提供了一种进程间通信的方式,使不同计算机上的进程能够通过网络进行数据交换。在Java中,Socket编程主要涉及`java.net.Socket`...
JAVA文件传输(论文+源代码)JAVA文件传输(论文+源代码)JAVA文件传输(论文+源代码)JAVA文件传输(论文+源代码)JAVA文件传输(论文+源代码)JAVA文件传输(论文+源代码)JAVA文件传输(论文+源代码)JAVA文件传输(论文+源代码)...
【JAVA文件传输P2P源码】是一种在局域网内实现文件共享和传输的程序,主要用于方便在没有专用文件传输工具的情况下,朋友之间能够快速、便捷地分享文件。P2P(Peer-to-Peer)技术是其核心,它允许网络中的每一个节点...
这个项目的标签“java文件传输”表明其重点在于Java环境下实现TCP/IP文件传输。从压缩包的文件名列表来看,可能包含实现此功能的Java源代码文件。通过这些代码,我们可以深入学习如何在实际项目中应用上述概念和技术...
Java文件传输系统是一种基于Java编程语言开发的软件应用,它允许用户在不同的终端或网络节点之间安全、高效地传输各种类型的文件,包括图片。这样的系统通常包含一系列关键组件和技术,以确保文件的完整性和传输效率...
本教程将深入探讨两个能真实运行的Java文件传输实例,它们是基于TCP协议实现的,确保了数据传输的可靠性。 首先,TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在...