




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、AllRightsReserved!本程序分为服务器和客户端两个小程序。主要实现的功能是:客户端向服务器端请求一个文件的传输连接,服务器接收到请求命令后,要求客户端发送用户名和密码,如果正确,就执行传输文件的过程,客户端接收完后,保存到一个文件中并在屏幕上显示出来。设计原理:服务器端建立一个SocketServer等待客户端的连接,每来一个客户端的请求连接, 就创建一个新的线程对其进行单独服务,然后继续等待其他的客户端的连接。客户端向服务器发送文件传输请求,在服务器端要求鉴权时,输入用户名和密码发送给服务器验证,如果验证通过就开始文件传输。使用方法,如果需要重新编译的话输入以下两条命令:jav
2、acSendFileSocket.javajavacSendFileClient.java在命令行下的运行方式:服务器端:javaSendFileSocket客户端:javaSendFileClientserverIPAddress例如:javaSendFileClient53服务器程序:/packagezieckey.socket;.*;importjava.io.*;/*一个简单的多线程服务器程序,用于传输文件*authorzieckeyjava 网络文件传输的实现Socket 编程*/publicclassSendFileSocketextendsThread(/*
3、paramargs*/publicstaticvoidmain(Stringargs)(/*if(args.length0)/如果有参数输入就启动服务器程序(server();else(/否则启动客户端进程client();*/server();/启动服务器程序privatestaticfinalintPORT=6000;privateSockets;privatestaticfinalStringname=zieckeyprivatestaticfinalStringpassword=123456publicSendFileSocket (Sockets)(this.s=s;publicvo
4、idrun()(try(Outputstreamos=s.getOutputStream();Inputstreamis=s.getInputStream();os.write(Hello,welcomeyou!.getBytes();byte口buf=newbyte100;while(true)(intlen=is.read(buf);StringrevStr=newString(buf,0,len);System.out.println(Thisclientwantsto+revStr);StringfileName;if(revStr.startsWith(get)/表明客户端请求传输一
5、个文件(os.write(Pleaseinputyournameandpassword!Usingtheformat:namepassword.getBytes();fileName=getFileName(revStr);len=is.read(buf);revStr=newString(buf,0,len);System.out.println(Thereceivedusernameandpassword:+revStr);if(revStr.startsWith(zieckey123456)(FileInputStreamfins=newFileInputStream(fileName)
6、;/bytefielBuf=newbyte100;intdata;while(-1!=(data=fins.read()/从文件中读取数据,每次读取1字节os.write(data);/将读取到的数据写到网络数据流中发送给客户段break;elseos.write(getingfilesusageis:getfilename.getBytes();os.close();is.close();s.close();catch(Exceptione)e.printStackTrace();/*作用:从客户端发来了文件请求命令中提取出所请求的文件名*参数:客户端发来了文件请求命令字符串,应该以“get
7、”开头*返回值:提取出所请求的文件名*/privateStringgetFileName(StringrevStr)(StringfileName;fileName=revStr.substring(3);while(fileName.startsWith()(fileName=fileName.substring(1);returnfileName;publicstaticvoidserver()(System.out.println(Thisisserver);try(ServerSocketss=newServerSocket(PORT);intcount=0;while(true)(/
8、创建一个Socket等待客户端连接Sockets=ss.accept();count+;newSendFileSocket(s).start();/启动一个线程为这个客户端服务catch(Exceptionex)ex.printStackTrace();/*publicstaticvoidclient()System.out.println(Thisisclient);try/创建一个SocketSockets=newSocket(InetAddress.getByName(null),PORT);OutputStreamos=s.getOutputStream();/输出流InputStre
9、amis=s.getInputStream();/输入流bytebuf=newbyte100;intlen=is.read(buf);/从输入流中读取数据到bufSystem.out.println(newString(buf,0,len);/向输出流中写入数据,请求传输一个文件os.write(getserver.txt.getBytes();len=is.read(buf);/从输入流中读取数据到bufStringtempStr=newString(buf,0,len);if(tempStr.startsWith(Pleaseinputyournameandpassword)System.
10、out.print(Pleaseinputyournameandpassword,);System.out.println(Thisisthe+count+stclientconnetion!);System.out.print(Usingtheformat:namepassword:);System.in.read(buf);os.write(buf);/开始读取文件数据并把它写到一个名为clientread.txt的文件中FileOutputStreamfos=newFileOutputStream(clientread.txt);intdata;while(-1!=(data=is.re
11、ad()fos.write(data);System.out.println(nFilehasbeenrecervedsuccessfully.);os.close();is.close();s.close();catch(Exceptionex)ex.printStackTrace();*/客户端程序:importjava ioFileOutputStream;importjava ioIOException;importjava ioInputStream;importjava ioOutputStream;.InetAddress;.InetSocketAddress;.Socket;p
12、ublicclassSendFileClient(privatestaticfinalintServer_PORT=6000;privatestaticfinalintClient_PORT=6001;/*使用方法:运行这个程序需要带上参数,参数类型为点分十进制的ip地址,例如:53*paramargs*throwslOException*/publicstaticvoidmain(Stringargs)throwslOException(/TODOAuto-generatedmethodstubSystem.out.println(Thisisclient);/*Sys
13、tem.out.print(Pleaseinputyournameandpassword,);System.out.print(Usingtheformat:namepassword:);bytebuf=newbyte100;System.in.read(buf);*/bytebuf=newbyte100;bytename=newbyte100;/InetAddressinetAddr;if(!isIPAddress(args0)(System.out.println(Theusageis:javaSendFileClientipaddress);System.out.println(Fore
14、xample:javaSendFileClient53);return;StringipStr=args0;try(/创建一个SocketSockets=newSocket();s.connect(newInetSocketAddress(ipStr,Server_PORT),Client_PORT);OutputStreamos=s.getOutputStream();/输出流InputStreamis=s.getInputStream();/输入流intlen=is.read(buf);/从输入流中读取数据到bufSystem.out.println(newStrin
15、g(buf,0,len);/向输出流中写入数据,请求传输一个文件os.write(getserver.txt.getBytes();len=is.read(buf);/从输入流中读取数据到bufStringtempStr=newString(buf,0,len);if(tempStr.startsWith(Pleaseinputyournameandpassword)(System.out.println(Pleaseinputyournameandpassword,);System.out.println(Usingtheformat:namepassword:);do(System.in.read(name);while(namelength5);os.write(name);/开始读取文件数据并把它写到一个名为clientread.txt的文件中FileOutputStreamfos=newFileOutputStream(clientread.txt);intdata;while(-1!=(data=is.read()(fos.write(da
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 恐龙展品租赁合同范本
- 社区应急知识培训课件图片
- 产品试用合同范本简约
- 草坪承包项目合同范本
- 外贸家具类合同范本
- 惠州买卖居间合同范本
- 天津标准装饰合同范本
- 医院房屋租赁合同范本
- 社区安全知识培训课件新闻稿
- 委托专项审计合同范本
- 节日期间纪检监督检查记录表
- GB/T 311.1-2012绝缘配合第1部分:定义、原则和规则
- (完整word)600习题《工会基础知识试题及答案》2020.1.6
- 中医药法宣讲余课件
- 富士康科技集团劳保用品采购
- 2022年家用空调安装合同范本
- 二手车鉴定评估的报告书
- 多智能体系统教材课件汇总完整版ppt全套课件最全教学教程整本书电子教案全书教案课件合集
- 艺术欣赏完整版课件全套ppt教程(最新)
- 有限空间作业考试题库600题含答案
- 建筑工程钢筋抽料知识总结
评论
0/150
提交评论