java网络文件传输的实现Word文件下载.docx
《java网络文件传输的实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《java网络文件传输的实现Word文件下载.docx(8页珍藏版)》请在冰豆网上搜索。
客户端向服务器发送文件传输请求,在服务器端要求鉴权时,
输入用户名和密码发送给服务器验证,如果验证通过就开始文件传输。
使用方法,如果需要重新编译的话输入以下两条命令:
javacSendFileSocket.java
javacSendFileClient.java
在命令行下的运行方式:
服务器端:
javaSendFileSocket
客户端:
javaSendFileClientserverIPAddress
例如:
javaSendFileClient192.168.0.153
服务器程序:
//packagezieckey.socket;
import.*;
importjava.io.*;
/**
*一个简单的多线程服务器程序,用于传输文件
*
*@authorzieckey
*/
publicclassSendFileSocketextendsThread
{
*@paramargs
*/
publicstaticvoidmain(String[]args)
/*if(args.length>
0)//如果有参数输入就启动服务器程序
server();
}else
//否则启动客户端进程
client();
}*/
//启动服务器程序
}
privatestaticfinalint
PORT
=6000;
privateSocket
s;
privatestaticfinalString
name
="
zieckey"
;
password
123456"
publicSendFileSocket(Sockets)
this.s=s;
publicvoidrun()
try
OutputStreamos=s.getOutputStream();
InputStreamis=s.getInputStream();
os.write("
Hello,welcomeyou!
"
.getBytes());
byte[]buf=newbyte[100];
while(true)
intlen=is.read(buf);
StringrevStr=newString(buf,0,len);
System.out.println("
Thisclientwantsto"
+revStr);
StringfileName;
if(revStr.startsWith("
get"
))//表明客户端请求传输一个文件
Pleaseinputyournameandpassword!
Usingtheformat:
name@password"
fileName=getFileName(revStr);
len=is.read(buf);
revStr=newString(buf,0,len);
Thereceivedusernameandpassword:
+revStr);
zieckey@123456"
))
FileInputStreamfins=newFileInputStream(fileName);
//byte[]fielBuf=newbyte[100];
intdata;
while(-1!
=(data=fins.read()))//从文件中读取数据,每次读取1字节
os.write(data);
//将读取到的数据写到网络数据流中发送给客户段
break;
getingfile'
susageis:
getfilename"
os.close();
is.close();
s.close();
}catch(Exceptione)
e.printStackTrace();
/*
*作用:
从客户端发来了文件请求命令中提取出所请求的文件名
*参数:
客户端发来了文件请求命令字符串,应该以“get”开头
*返回值:
提取出所请求的文件名
privateStringgetFileName(StringrevStr)
fileName=revStr.substring(3);
while(fileName.startsWith("
"
fileName=fileName.substring
(1);
returnfileName;
publicstaticvoidserver()
Thisisserver"
);
ServerSocketss=newServerSocket(PORT);
intcount=0;
//创建一个Socket等待客户端连接
Sockets=ss.accept();
count++;
Thisisthe"
+count+"
'
stclientconnetion!
newSendFileSocket(s).start();
//启动一个线程为这个客户端服务
}catch(Exceptionex)
ex.printStackTrace();
/*publicstaticvoidclient()
Thisisclient"
//创建一个Socket
Sockets=newSocket(InetAddress.getByName(null),PORT);
//输出流
//输入流
//从输入流中读取数据到buf
System.out.println(newString(buf,0,len));
//向输出流中写入数据,请求传输一个文件
getserver.txt"
StringtempStr=newString(buf,0,len);
if(tempStr.startsWith("
Pleaseinputyournameandpassword"