预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Java网络文件传输的实现——Socket编程 本程序分为服务器和客户端两个小程序。主要实现的功能是:客户端向服务器端请求一个文件的传输连接,服务器接收到请求命令后,要求客户端发送用户名和密码,如果正确,就执行传输文件的过程,客户端接收完后,保存到一个文件中并在屏幕上显示出来。 设计原理: 服务器端建立一个SocketServer等待客户端的连接,每来一个客户端的请求连接,就创建一个新的线程对其进行单独服务,然后继续等待其他的客户端的连接。创建一个服务器文件server.txt。 客户端向服务器发送文件传输请求,在服务器端要求鉴权时,输入用户名和密码发送给服务器验证,如果验证通过就开始文件传输。 使用方法,如果需要重新编译的话输入以下两条命令: javacSendFileSocket.java javacSendFileClient.java 在命令行下的运行方式: 服务器端: javacSendFileSocket.java javaSendFileSocket 客户端: javacSendFileClient.java javaSendFileClientserverIPAddress 例如:javaSendFileClient192.168.1.101 用户名和密码:cyf@123 服务器端SendFileSocket.java: //packagecyf.socket; importjava.net.*; importjava.io.*; /**************************** *一个简单的多线程服务器程序,用于传输文件 * *@authorcyf ****************************/ publicclassSendFileSocketextendsThread { /************* *@paramargs *************/ publicstaticvoidmain(String[]args) { /*if(args.length>0)//如果有参数输入就启动服务器程序 { server(); }else { //否则启动客户端进程 client(); }*/ server();//启动服务器程序 } privatestaticfinalintPORT=6000; privateSockets; privatestaticfinalStringname="cyf"; privatestaticfinalStringpassword="123"; 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"))//表明客户端请求传输一个文件 { os.write("Pleaseinputyournameandpassword!Usingtheformat:name@password" .getBytes()); fileName=getFileName(revStr); len=is.read(buf); revStr=newString(buf,0,len); System.out.println("Thereceivedusernameandpassword:"+revStr); if(revStr.startsWith("cyf@123")) { FileInputStreamfins=newFileInputStream(fileName); //byte[]fielBuf=newbyte[100]; intdata; while(-1!=(data=fins.read()))//从文件中读取数据,每次读取1字节 { os.write(data);//将读取到的数据写到网络数据流中发送给客户段 } break; } }else { os.write("getingfile'susageis:getfilename".getBytes()); } } os.close(); is.cl