下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实用标准文案信息工程学院1 1?Java语言程序设计?实验报告学院:信息学院班级:*姓名:pprp学号:*3成绩:一、实习目标(1)描述掌握 Socket 通信(2)掌握 UD 嘤据报通信(3)掌握多线程网络编程二、实验过程任务一:掌握Socket类的使用在两台机器上分别运行以下效劳器端程序和客户端程序,观察程序的屡次运行结果,答复下列问题.17/效劳罂瑞程序&publiccla&sServer(9publicstaticvoidmain(Stringargs)IQServersocketsSocket=null;;1111SocketSocketsocketsocket= =
2、null;null;112try13sSacket=newServerSocket(2918)j/sicatch(lOExceptione)155VsSm.out:.pPintIn(端口已被占用!“);产il7try13socket=sSacket.accept();/s219System.outiprintIn(socket.getlnetAddressf);/s32QSystem.out,printIn(socket.getPort()*/s4|21System.out.printIn(socket.getLoeaISocketAddress()/s5System.out,printIn(
3、socket.getLocalPort();/sbsocket.closef);24catch(lOExceptione)125Sy与七白日也青邛irvtlM靛户端异常.;2627|28|28) )实验报告的内容与格式按任课教师的要求书写.精彩文档7/客户端程序3publclassClient(,实际效劳器端主机IPpublicstaticvoidmain(Stringargs)、IOSocketsocket=newSocket();、/cl11InetSocketAddressisa=newInetSocketAddress(12022);12try13socket.connect(isa)
4、;/c214System.out*println(socket*getInetAddressC);/c315System.out.println(socket.getPort();/c416Systemout.println(socketigetLocalSocketAddress()j/c517System.out.printin(socket.getLocalport();/c613socket.close()j19catch(lOExceptione)2Systemhout.printingj21)2223)观察效劳器端和客户端的输出,说明添加注释的每行代码作用.截图:两次效劳器与客户端
5、的输出,可以发现两次所用到的端口是随机生成的是不一致的./20227:5989859898|/127,0.0,159898/:20222022代码如下:实用标准文案/2022/127,0.0,1:5936859368|/59368/:20222022精彩文档实用标准文案packageworkl;importjava.io.TOException;IpublicclassServerpublicstaticvoidmain(Stringargs)ServerSocketsSocket=nu
6、ll;Socketsocket=null;try(sSocket=newServerSocket(2918);catch(lOExc即tionel)System.out.printin(疆口已被占用!);)try(socket=sSocket.accept()jSystem,out*println(sockettgetInetAddress();System.out.printin(socket.getPort();System,out.printIn(socket.getLocalSocketAddressf);System.out.printlnfsocket.getLocalPort()
7、;catch(lOExceptionie)System.out.printIn(0还接客户/异常.);)packageworkl;importjava.io.IOException;DpublicclassClientpublicstaticvoidmain(Stringargs)throwslOExCptionSocketsocket=newSocket();/clInetSocketAddressisa=newInetSockGtAddres5(u127.0.0.l2022);try(socketiconnect(isa);/c2Sy&tem.outprintln(socketge
8、tInetAddress();/c3System.outprintlnfsocketgetPort();/c4System.outprintln(socketgetLocalSocketAddress();/c5System.outprintln(socketgetLocalPortf);/c6catch(TOExceptione)“stem.口七,printIn(,电接效劳器异常);socket.close();I问题答复:S1:实例化 ServerSocket 对象,并指定效劳器中的端口为 2022S2:ServerSocket 对象的 accept()方法例如化 Socket 对象,并阻
9、塞进程,等待用户端的连接精彩文档实用标准文案S3:打印效劳器端套接字连接的 IP 地址S4:打印效劳器端套接字连接的远程端口S5:得到效劳器端套接字绑定的本地 IP 地址及端口S6:打印效劳器端套接字绑定的本地端口C1:实例化 Socket 对象C2:将 InetSocketAddress 类实例化的对象中所包含的效劳器主机 IP 及端口,调用 connect()方法,传入至 Socket 类中,与效劳器进行连接C3:打印用户端套接字连接的 IP 地址C4:打印用户端套接字连接的远程端口C5:获取用户端套接字绑定的本地 IP 地址及端口C6:打印用户端套接字绑定的本地端口任务二:使用TCP协议
10、实现文件传送在当前工程的根目录新建两个文件夹:“source和“destination,在source 中放置两个文件:“cartoon.jpg以及“Ile.docx 这两个文件见实习附件.实现一个效劳器端程序 Server,效劳器端可以通过文件流直接读取文件内容.实现一个客户端程序 Client,客户端程序运行后,提示用户输入文件名.如,用户在客户端输入“file.docx并回车,那么程序通过 TCP 协议读取服务器端的数据,将该文件传送一个副本保存在“destination目录中.结果截图:请输入一个文请输入一个文件件名名: :file.docx文件接收完毕文件接收完毕! 请输请输入入一个
11、一个文件名文件名:cartoon,jpg文文件接收完毕件接收完毕! 请输请输入一入一个个文件名文件名: :fileName:file.docx效劳器:传送内容文件发送完毕!fileName:cartoon.jpg效劳器:传送内容文件发送完毕!精彩文档实用标准文案一, ,iJiJPrsctice8thPrsctice8thC由worklIj|ClientjavaI IJ J| |ServerjavaServerjavaJ出work2|j|j| |ClientJjvaClientJjva,JJServerjavab田works】出work400JRE素统库:J3.3SE-1.7destinatio
12、ncartoonjpg回filejdocxL L. . .sourcesourcecartoonjpgcartoonjpg笆file.dooc精彩文档实用标准文案代码截图:Server.javapackagework?;importjava.io*DataInputStream;|I IpublicclassServerServerSocketss=null;Socketsocket=null;Fileinputstreamfisis= =null;null;DataOutputStreamdos=null;DatalnputStreamdis=null;null;publicServerf)
13、tryss=newServerSocket(5036);socket=ss.accept.:dos=newDataOutputStream(socket.getOutputStream();dis=newDataInputStream(socket.getInputStream();catch(lOExceptione)System-out,printlnf效劳器:港接失败eprintStackTrace();精彩文档实用标准文案publicvoidinteract()while(true)trybyteb=newbyte1024;intlens=dis.read(b);StringfileN
14、ame=newStringCbjQ,lens);System.out.println(fileName:+fileName);fis=newFileInputStream(,.WsourceW+fileName);byte口buffer=newbyte1024*600;intlen;Sy5tem.oK.println(服劣器*传送内容);while(len=fis,read(buffer)I=-1)dos.write(bufferlen);doswrite(END.getBytes();System.out.printIn(文件发送完毕!*();catch(lOExceptione)Syste
15、m.口戊.println(“效劳器:读人失败);e.printStacklrace();)tryfis,close();catch(lOExceptione)/TODO自动生成的catch斑e.printStacklrace();)publicstaticvoidmain(5tringargs)newServer().interact();Client.java精彩文档实用标准文案packagework2;importjava.io.DatalnputStreain;publicclassClientSocketss=null;Scannerin=newScanner(System.in);F
16、ileOutputStreamfos=null;StringfileName;DataOutputStreandos=null;DatalnputStreamdis=null;publicClient()ss=newSocketf);InetSocketAddressisa-newInetSocketAddress(127.0,01,5036);trys$.conn9ct(isa);dos=newDataOutputStream(ss.getOutputStream();dis=newDataInputStrea(ri(ssgetInputStream();catch(lOExceptione
17、)System.out.printIn(客户端避接失IT);publicvoidinteract()throwslOExceptionwhile(true)Sy9printin(请输入一个文件名;filename=innextLine();byteb=filename,getBytes();dos*write(b);intlength=0;bytebb=newbyte1624*690;fos=newFileOjtpLjtStreani(hh.destinationhh+fileName);try(while(length=dis.read(bb)!=-1)/SystemioutiprintIn
18、(newString(bb,length-3J3)+length)jif(newString(bbjlength-33).equals(END)brtak;)千of.Mpitg(t)30,lurigth);)System,oui:.printIn(文件接收完毕!);catch(lOExceptione)尔3俣小printin(害户端接受照务器发送的数据失败!);)fos,close.;).publicstaticvoidmain(Stringargs)throwslOExceptionClientt=newClient();t,interact()j)说明:本次实验遇到的最大的困难就是此题,通
19、过询问老师得到解决精彩文档实用标准文案问题描述:客户端向效劳器发送一个文件名,效劳器端通过文件流将文件读入内存,然后再用网络流输出到客户端,客户端接受到文件流然后用文件流保存到本地.在客户端接受网络流的时候会发现客户端程序进入死循环,无法进行下一个文件的读写.问题出现原因:由于客户端通过网络流进行读写的时候与文件读写是不一样的,不会出现读到文件尾部的情况,而是会一直等待从而造成死循环.问题解决方法:设置一个文件末尾标记进行读写,如果读取到该标记那么说明结束,break断开死循环.任务三:现有一个Triangle三角形类publicclassTriangleimplementsSeriali2a
20、bledoublesideAjdoublesideBjdoublesideC;Stringarea;publicTriangle(doublea,doublebdoublec)thisthis. .sideA=a;this.sideB=b;thissideC=c;)publicbooleanpublicbooleanisLegal()判断三角形三条边是否合法口publicpublicStringcaIculateArea()/计算三角形面积doublep=(sideA+sideB+sideC)/2.0;area=+Math*sqrt(p*(p-sideA)*(p-sideB)*(p-sideC
21、);returnreturnarea;思考:为什么 Triangle 需要实现 Serializable 接口?效劳器用于接收客户端传来的 Triangle 对象,计算三角形面积,将计算结果传给客户端.连接效劳器之前:精彩文档实用标准文案点击“连接效劳器实现连接,点击“send提交计算请求:根本要求:使用 ServerSocket 类和 Socket 类实现单线程对象的发送与接收实现计算结果的发送与接收.效劳器端可以不使用界面.效果截图:精彩文档实用标准文案代码截图:Triangle.java精彩文档实用标准文案packagework3;importjaua,io.Serializable;/
22、,x x 序列化是为了便于在网络的传输和保存序列化是为了便于在网络的传输和保存*/publicclassTriangleimplementsSerializable(doublesideA;doublesldeB;doublesideCjdoublearea;publicTriangle()sideA=sideB-sideC-e;)publicTriangle(doubleadoublebdoublec)thisisideA=a;this.sideB=b;this.sideC=c;)publicbooleanisLegal()if(sideB+sideAsideC)&(sideB-si
23、deAsideB)&(sideC-sideAsideA)&(sideB-sideC;north,settiyout(newBordelsyout();nQrthddtlirik,BordenLayoutcenter,setLayout(newFlciuLaout();精彩文档实用标准文案center,add(newJLabel(bSideA;);centerTadd(textA);center,add(newJLabel(51deB:H);centerTadd(textB);center.add(newLabel(HSldeCH);centerTadd(textC);cente
24、r,add(send);southTsetLayout(nehBorderLayout;south,add(area);area.s&tBorder(newBevelBorder(Bev&lBorderTLOWERED);this.5mti包计算三再形面积);this.setVlslbie(true);this*setSlze(newDiniensi&n(606,49);this,5&tDefaultC105eCipratian(3Frame.EXIr_ON_CLOS);this.add(north,BorderLayout.NCWTH);this.addfce
25、nter,BarderLayout;this.add(soGthFBorderLa/out) )voidarea.setRows(16);textA,setPreferredsinewDimensionfiee,30);textBTsetPreferreds!newDimenslonfiee,3);textcTsetPreferredsinewDimensiontiee,39);link.addActlonListener(newActionLi5teneroverridepublicveldactlorPerfornied(ActionEvent&)ifif(tc.UnkO)(tc.
26、UnkO)9广已占.3齿丁*1:,效劳器连接成功!.邛地址为:*+tc.ss.getlnetAddress()+Warea.dppend端口也址为:+tc.55.ettLocalPort()+-Vn);elseare占.与Nxt效劳骞连接失败send.addActionListener(newActionListener()gOverridepublicvoidactionPerformed(ActionEveinte)String8-nulljb-null,c-null;a-textA.getText()jb-textB.getText();c工textC.getText);DoubleSa
27、rea、eract(a,b,c);if(Sarea-1)area.叩pend(“输入的三个边长不能蛆成三角形!“);elseelsearcarc叩pendpend(三角形的面积为:+SareaSarea+ +nn) ); ;);publicstaticvoidmain(Stringargs)newTriangleFrame();精彩文档实用标准文案TCPServcer.javapackagepackageworkB5workB5importimportjavajava-io*-io*DatalnputStreamDatalnputStreamj j| |publicclasspub
28、licclassTCPServerTCPServerServerSocketss=nulljSocketSocketsocketsocket二mullmull DatalnputStreamdis=nulljDataOutputStDataOutputStreamreamdosdos= =nullnull; ;publicpublicTCPServeP(TCPServeP() ) “V(ss=newServerSocket(666G)jsocket=ss.accept();dis=newnewDatalnputStream(DatalnputStream(socketsocket. .gege
29、J JtInputStream(tInputStream() )j)jdos=newDataOutputStream(socket,getOutputStrearn(); catchcatch(lOException(lOExceptione)e)System.out.printIn(初始化失败:端口被占用);)publicvoidinteract()|Trianglet=null;while(true)try(doubledoublea a= =dis.dis.readDouble()readDouble();doubledouble=disdis. .readDoubl&();re
30、adDoubl&();doublec=dis.readDouble();t=newTriangle(a,b,c);doublearea=-1;if(t*isLegal()=false)dos.writeDouble(area);elearea=t*calculateArea();doswriteDouble(area)5catch(lOExcptione)/TODOAuto-generatedcatchblockeiprintStackTrace()j11.publicstaticvoidmain(Stringargs)throwslOExceptior(newTCPServer().
31、interact();)精彩文档实用标准文案TCPClient.javapackagepackageworkB;workB;importimportjavajava. .io.DataInputStream;-io.DataInputStream;-publicclasspublicclassTCPClientTCPClientSocketSocketssss- -null;|null;|DatalnputStreamDatalnputStreamdisdis= =null;null;DataOutputStreamDataOutputStreamdosdos= =null;null;publ
32、icpublicTCPClient()TCPClient() 5 5 导=naunauSocketSocket()(); ; publicbaolcsnpublicbaolcsnlink(link() ) InetSocketAddressInetSocketAddressisis 君=n n w wInetSocketAddress(InetSocketAddress(127127 0.00.011j j666666.) ):trytry1 1ssss. .connecttisa)connecttisa)didis s= =newnewDatalnputStreamss.DatalnputS
33、treamss.getgetInputInputStStream(ream(); ;dosdos= =newnewDataOutputStreamfssDataOutputStreamfss getOutputStream()getOutputStream(););System,System,outout.print.printIn(In(; ;returntrue;returntrue; catchcatch(TOException(TOExceptione)e) System.System.owtowt.print.printIn(In(,F,F););returnfalse;return
34、false;publicdoubleinteract(Stringal,Stringbl.Stringcl)doublearea=0;try(doublea=Double.valueOfal)jdos.writeDouble(a);doubleb=Double.valueOf(bl);dos.writeDouble(b);doublec=Double.yaLueOf(cl,)*dos.uriteDouble(c);area=dis*readDouble();catch(lOExceptione)R.printStackTrace();returnarea;说明:需要先启动 server 效劳器
35、端再启动客户端,再代码构建的时候应该分两部1、链接局部,生成 socket,serversocket 对象,并连接起来.2、处理局部,interact 进行交互完成数据传输.参加界面以后由于需要在点击链接按钮以后再进行连接,所以要单独写一个精彩文档实用标准文案用来构造的函数任务四:使用UDP数据报传输数据用 UD 嘤据报传输数据,实现两个终端的消息通信使用 Java 命令分别运行效劳器端和客户端根本要求:实现两个终端 UDP 母口 UDPBUDPBOUDP 徼:送“TIME命令,UDP 底收到命令后,将当前 UDPA 勺系统时间发送给 UDPBUDPB 等该时间输出.结果截图:清输入一个指令!
36、TIMETIME发送成功!接受成功!FriJan1210:50:46CST2022接受成功!TIMEFrilan1210:50:46CST2022发送成功!代码截图:UDPA.java精彩文档实用标准文案packagework4;importjava.io.10Exception;publicclassUDPADatagramSocketsends=null;DatagramPacketsendP=null;bytedata=newbyte1024;bytedata!-newbye1024;DatagramSocketgets=null;DatagramPacketgetP二null;publ
37、icUDPA()trytry( (sends=newDatagramSocket();gets=newDatagramSocket(8989);eatch(SocketExceptione)e_printStackTrace();)精彩文档实用标准文案publicvoidinteract()/while(true)System.out.printIn(请输入 T 指令!Scannerin=newScannerfSystemin);Stringstr=in.nextLinef);System.out.printIn(str)jdata=str.getBytesf)5InetSocketAddressisa=newInetSocketAddress(9898);trysendP=newDatagramPacket(datadata.length,isa);catch(SocketExceptionel)el.printStackTrace();trysends.send(sendP);catch(lOExceptione)System.out.printIn(success!)je.printStackTrace();Syst
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园开放日家长观后感
- 2025-2026学年会展舞台设计教学
- 2025-2026学年教学设计理论建构主义
- 2025-2026学年白烨教学设计
- 2025-2026学年教学大赛教学设计框架
- 合作方确认2026年智能仓储系统升级服务费的协商函(7篇)
- 放手而不放任:广东省新高一家长必读的亲子沟通与角色转变手册
- 跨境电商商家产品合规性检查指南
- 提升安全防范意识筑牢安全防线的小学主题班会课件
- 2025年直播选品质量管控 第三方质检与用户评价监控机制
- 2026年北京市丰台区初三下学期二模物理试卷和答案
- 2021-2022学年大连市沙河口区六年级下册小升初考试 数学 试卷(含答案)
- 基于频率法串联超前校正课程设计
- GB/T 3457-1998氧化钨
- GB/T 3405-2011石油苯
- GB/T 2423.2-2008电工电子产品环境试验第2部分:试验方法试验B:高温
- DL-T 5190.1-2022 电力建设施工技术规范 第1部分:土建结构工程(附条文说明)
- GA/T 642-2020道路交通事故车辆安全技术检验鉴定
- 第三章,海洋生物,的繁殖,与发育
- 2021年安徽省中考地理真题(word解析版)
- 2022年医学专题-国家慢性病综合防控示范区建设指标体系
评论
0/150
提交评论