下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年酉阳土家族苗族自治县特岗教师招聘真题汇编含答案解析(夺冠)
- 2025上海城建职业学院招聘图文信息中心副主任1人参考题库含答案解析(夺冠)
- 2026年上半年贵州省中小学教师资格考试(笔试)备考题库含答案【a卷】
- 2024年梁平县特岗教师招聘真题汇编含答案解析(夺冠)
- 2025年七台河市特岗教师招聘考试真题汇编及答案解析(夺冠)
- 2023年营口市特岗教师招聘考试真题题库带答案解析
- 2024年池州市特岗教师笔试真题汇编及答案解析(夺冠)
- 2025年萍乡市特岗教师招聘真题汇编带答案解析
- 电商运营专员总结报告
- 标准化管理员工作汇报模板
- 2025年秋《习概》终考大作业试卷2
- 供水行业反恐怖
- 广东省2026年普通高中学业水平合格性考试模拟试卷3语文试题(含答案)
- 2025广西玉林市福绵区退役军人事务局招聘编外人员3人笔试考试备考试题及答案解析
- 公路工程项目管理全流程
- 离心机教学课件
- GB/T 18451.2-2025风能发电系统风力发电机组功率特性测试
- 法律条文条款项课件
- 中国人民银行所属企业网联清算公司社会招聘笔试考试备考试题及答案解析
- 一点点供应链管理案例
- 十五五规划建议专题测试及答案
评论
0/150
提交评论