




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 5.1《农事季节我帮忙·农耕常识知多少》说课稿 2024-2025学年辽海版《综合实践活动》九年级下册
- 小学二年级语文教案草原上的鹰教学设计之二(2025-2026学年)
- 设备采购合同
- Unit 1 We fly kites in spring.说课稿-2023-2024学年小学英语三年级下册外研版(三起)(陈琳主编)
- Lesson 11 Geography in English说课稿初中英语新世纪版六年级第二学期-新世纪版试用本
- 九年级道德与法治下册 第三单元 走向未来的少年 第五课 少年的担当 第1框 走向世界大舞台说课稿1 新人教版
- 九年级英语下册 Unit 6 Entertainment and Friendship Topic 3 I will remember our friendship forever Section A说课稿2 (新版)仁爱版
- 第一节 气温与降水的分布和变化说课稿-2025-2026学年初中地理中图版北京八年级上册-中图版北京2014
- 2025学校教材采购合同样本
- 本单元复习与测试教学设计-2025-2026学年高中思想政治必修2 经济与社会统编版(部编版)
- 义务教育英语课程标准-评价部分解读课件
- 国家开放大学电大专科《药理学》形考任务4试题及答案(试卷号:2118)
- 中职语文《雨巷》市公开课一等奖省名师优质课赛课一等奖课件
- 铁路客车空气制动装置单元制动缸检修标准
- 铁道概论全套课件
- GB∕T 2518-2019 连续热镀锌和锌合金镀层钢板及钢带
- 外贡丹-外科集腋卷一-方剂加减变化汇总
- bras扁平化方案竞争分析-材料
- 中国联通cBSS系统使用培训-第一部分
- Windows主机安全加固手册
- 城市地理学城市化原理课件
评论
0/150
提交评论