分布式系统实验报告_第1页
分布式系统实验报告_第2页
分布式系统实验报告_第3页
分布式系统实验报告_第4页
分布式系统实验报告_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

分布式系统试验报告-标准化文件公布号:〔9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII10中南大学分布式系统试验报告名目ctrl点击名目条可直达,wps下有效〕\l“_TOC_250025“试验一数据包socket应用 4\l“_TOC_250024“一、试验目的 4\l“_TOC_250023“二、预习与试验要求 4\l“_TOC_250022“三、试验环境 4\l“_TOC_250021“四、试验原理 5\l“_TOC_250020“五、试验内容 6\l“_TOC_250019“六、试验报告 7\l“_TOC_250018“七、思考题 9\l“_TOC_250017“试验二流式socket应用 9\l“_TOC_250016“一、试验目的 9\l“_TOC_250015“二、预习与试验要求 9\l“_TOC_250014“三、试验环境 9\l“_TOC_250013“四、试验原理 10\l“_TOC_250012“五、试验内容 10\l“_TOC_250011“六、试验报告 10\l“_TOC_250010“七、思考题 13\l“_TOC_250009“试验三客户/效劳器应用开发 14\l“_TOC_250008“一、试验目的 14\l“_TOC_250007“二、预习与试验要求 14\l“_TOC_250006“三、试验环境 14\l“_TOC_250005“四、试验原理 14\l“_TOC_250004“五、试验内容 15\l“_TOC_250003“六、试验报告 15试验九虚拟机的使用与Linux系统的安装 34\l“_TOC_250002“一、试验目的 34\l“_TOC_250001“二、试验内容和步骤 34\l“_TOC_250000“三、试验结果 36socket应用一、试验目的理解数据包socket的应用实现数据包socket通信了解Java并行编程的根本方法二、预习与试验要求预习试验指导书及教材的有关内容,了解数据包socket的通信原理;生疏一种javaIDE和程序开发过程;了解以下JavaAPI:Thread、Runnable;尽可能独立思考并完成试验。三、试验环境独立计算机或计算机网络;WindowsJdkJCreatororothers四、试验原理分布式计算的核心是进程通信。如Winsock、.*。SocketAPIIPC制。尽管应用人socketAPI1,高层设socketAPIsocketAPI;2,对于以响应时间要求较高或运行于有限资源平台上的应用来说,socketAPI可能是最适合的。InternetUDPTCPUDP〔是否存在面对连接的数据包socket〕socketUDPIPC。JavasocketAPI针对socket的datagramSocket类针对数据包交换的datagramPacket类APIdatagramSocketsocektUDP程必需创立datagramsocket。在接收者进程中,datagramPacket上,该端DatagramPacket,并datagramSocketreceiveDatagramPacket为参数定义。并行编程〔以Java为例1〕Java程同时运类。这个子类Threadrun法创立一个线Runnable〔run〕。一个类的实例可以被安排并作为参数传递给创立的线程,并启动线程。例如:创立一个类是Thread的子类:classSomeThreadextendsThread{SomeThread{}publicvoidrun{...}}SomeThreadp=newSomeThread;p.start;RunnableclassSomeRunimplementsRunnable{SomeRun{}publicvoidrun{...}}SomeRunp=newSomeRun(143);newThread(p).start;RunnableThread实例,并通过自身作为目标线程。在大多数状况下,假设你只打算重写的run〔〕方法Runnable非程序员有意修改或增加类的根本行为。五、试验内容构建客户端程序〔1〕datagramSocket对象实例〔2〕DatagramPacket对象实例,并包含接收者主机地址、接收端口号等信息〔3〕datagramSocket对象实例的send方法,将DatagramPacket对数发送。构建效劳器端程序构建datagramSocket对象实例,指定接收的端口号。构建DatagramPacket对象实例,用于重组接收到的消息。datagramSocketreceive将DatagramPacket六、试验报告客户端:importjava.io.IOException;import.DatagramPacket;import.DatagramSocket;import.InetAddress;importjava.util.Scanner;publicclassClient{publicstaticvoidmain(String[]args)throwsIOException{//DatagramSocket,使用随机端口DatagramSocketsocketnewDatagramSocket;//初始化发送用的DatagramSocket,0组DatagramPacketoutPacket=newDatagramPacket(newbyte[0],0,InetAddress.getByName(““),30000);//byte[]inBuffnewbyte[4096];DatagramPacketinPacket=newDatagramPacket(inBuff,inBuff.length);//Scannerscan=newScanner(System.in);//while(scan.hasNextLine){

//byte[]buffscan.nextLine.getBytes;outPacket.setData(buff);//socket.send(outPacket);//读取SocketinPacketsocket.receive(inPacket);System.out.println(newString(inBuff,0,inPacket.getLength));}}}效劳端:importjava.io.IOException;import.DatagramPacket;.DatagramSocket;publicclassServices{publicstaticvoidmain(String[]args)throwsIOException{//定义接收网络数据的字节数组byte[]inBuffnewbyte[4096];//DatagramSocketDatagramSocketsocket=newDatagramSocket(30000);DatagramPacketDatagramPacketinPacket=newDatagramPacket(inBuff,inBuff.length);Stringmessage=“消息已经收到!“;while(true){socket.receive(inPacket);//将接收到的内容转换成字符串后输出System.out.println(newString(inBuff,0inPacket.getLength));//byte[]sendData=message.getBytes;//DatagramPacket//SocketAddressSocketAddressDatagramPacket}

//DatagramPacketDatagramPacketoutPacket=newDatagramPacket(sendData,sendData.length,inPacket.getSocketAddress);//发送数据socket.send(outPacket);}}试验过程中的问题和解决途径;、DatagramSocketJDKapi效劳端:1:2:七、思考题如何避开数据包丧失而造成的无限等待问题?承受者收包时查看序号即可。如何实现全双工的数据包通信?答:利用端口套接字之间的通信功能。socket应用一、试验目的理解流式socket的原理实现流式socket通信二、预习与试验要求预习试验指导书及教材的有关内容,了解流式socket的通信原理;生疏java环境和程序开发过程;尽可能独立思考并完成试验。三、试验环境独立计算机;WindowsJdk四、试验原理SocketAPIIPC该层编写代socketAPI:1,高层设施是构建于socketAPI之上的,即他们socketAPI;2,对于以响应时间要求较高或运行于有限资源平台上的应用来说,socketAPI可能是最适合的。InternetUDPTCPUDPTCPIPCsocket。JavasocketAPIsocket〔1〕式用于连socket〔2〕式用于数据交换的数据socket。五、试验内容MystreamSocketjavaSocketsendMessage和receiveMessage方法构建客户端程序MyStreamsocket号调用该socket的receiveMessage方法读取从效劳器端获得的消息构建效劳器端程序socketsocket侦听客户端的连接恳求创立一个MyStreamsocket的实例对象MyStreamsocketsendMessage。六、试验报告应用程序的构造图,说明程序之间的关系;程序的伪代码。import.*;importjava.io.*;publicclassMystreamSocketextendsSocket{privateSocketsocket;privateBufferedReaderinput;privatePrintWriteroutput;//客户端的构造方法MystreamSocket(InetAddressacceptorHost,intacceptorPort)throwsSocketException,IOException{socket=newSocket(acceptorHost,acceptorPort);setStreams;}//效劳端的构造方法MystreamSocket(Socketsocket) throwsIOException{this.socket=socket;setStreams;}设置输出输入流privatevoidsetStreamsthrowsIOException{InputStreaminStream=socket.getInputStream;input=newBufferedReader(newInputStreamReader(inStream));OutputStreamoutStream=socket.getOutputStream;output=newPrintWriter(newOutputStreamWriter(outStream));}//发送消息publicvoidsendMessage(Stringmessage)throwsIOException{output.println(message);output.flush;}//接收消息publicStringreceiveMessagethrowsIOException{Stringmessage=input.readLine;returnmessage;}//关闭全部翻开的东西publicvoidcloseAll{try{if(input!=null)input.close;if(output!=null)output.close;if(socket!=null)socket.close;}catch(IOExceptione){//TODOcatche.printStackTrace;}}}Client.java:importjava.io.IOException;import.InetAddress;publicclassClient{publicstaticvoidmain(Stringargs[]){try{InetAddresshostname=InetAddress.getByName(“localhost“);MystreamSocketmss=newMystreamSocket(hostname,12345);我是客户端,我恳求连接!“);System.out.println(mss.receiveMessage);mss.close;}catch(IOExceptione){//TODOcatche.printStackTrace;}}}效劳端Services.java:importjava.io.IOException;import.ServerSocket;import.Socket;publicclassServices{publicstaticvoidmain(Stringargs[]){try{ServerSocketservices=newServerSocket(12345);Socketsocket;while(true){socket=services.accept;//多线程处理连接恳求newServicesThread(socket).start;}}catch(IOExceptione){//TODOcatche.printStackTrace;}}}importjava.io.IOException;import.Socket;publicclassServicesThreadextendsThread{Socketsocket;ServicesThread(Socketsocket){this.socket=socket;}publicvoidrun{try{MystreamSocketmss=newMystreamSocket(socket);System.out.println(mss.receiveMessage);mss.sendMessage(“消息已收到!“);mss.closeAll;}catch(IOExceptione){//TODOcatche.printStackTrace;}}}七、思考题如何实现全双工的流式socket通信?后利用其供给的功能进展通信。如何实现安全socketAPI?答:留意在通信过程中的各种特别状况的捕获与处理。1答:在效劳端使用多线程。/一、试验目的验证daytime和echo程序,实现包socket支撑的C/S模式IPC机制实现流式socket支撑的C/S模式IPC机制二、预习与试验要求daytimeecho效劳内容;复习包socket和流式socket的实现原理;试验前认真听讲,听从安排。尽可能独立思考并完成试验。三、试验环境独立计算机;WindowsJdk四、试验原理C/S指如daytime、telnet、ftpWWWC/S如何通过会话实现多个用户的并发问题如何定义客户和效劳器在效劳会话期间必需遵守的协议效劳定位问题进程间通信和大事同步问题:语法、语义和响应数据表示问题在解决了这些问题的根底上,C/S范型必需遵从3层构造的软件体系构造:表示层,供给与客户端进展交互的界面应用规律层,定义效劳器和客户端要处理的主要事务的业务规律IPC里的receivesend方法等。五、试验内容构建用数据包socket实现的daytime客户端程序构建表示层程序DaytimeClient1.java构建应用规律层程序DaytimeHelper1.java构建效劳层程序MyClientDatagramSocket.java构建用数据包socket实现的daytime效劳器端程序构建表示层和应用规律层程序DaytimeServer1.java构建效劳层程序MyServerDatagramSocket.javaMyServerDatagramSocket.javaDatagramMessage.java〔它封装了客户端的消息和地址〕构建用流式socket实现的daytime应用程序包构建用数据包socket实现的echo应用程序包构建用流式socket实现的echo应用程序包六、试验报告socketdaytime关系;客户端:效劳端:代码:DaytimeClient1.javaimportjava.io.*;publicclassDaytimeClient1{publicstaticvoidmain(String[]args){InputStreamReaderis=newInputStreamReader(System.in);BufferedReaderbr=newBufferedReader(is);try{client.\n“+

System.out.println(“theDaytime“Whatisthenameoftheserverhost“);StringhostName=br.readLine;if(hostName.length==0)hostName=“localhost“; //使用默认主机名System.out.println(“Whatistheportnumberoftheserverhost“);口

StringportNum=br.readLine;if(portNum.length==0)portNum=“1300“; //设置默认端System.out.println(“Hereisthetimestampreceivedfromtheserver“.getTimestamp(hostName,portNum));}catch(Exceptionex){ex.printStackTrace;

+DaytimeClientHelper1}}}DaytimeClientHelper1.javaimport.*;publicclassDaytimeClientHelper1{publicstaticStringgetTimestamp(StringhostName,StringportNum){Stringtimestamp=““;try{InetAddressserverHost=InetAddress.getByName(hostName);intserverPort=Integer.parseInt(portNum);//socket发送和接收数据MyDatagramSocketmySocketnewMyDatagramSocket;““);戳mySocket.close;}

mySocket.sendMessage(serverHost,serverPort,timestampmySocket.receiveMessage;//catch(Exceptionex){System.out.println(“Thereisaproblem:“+ex);}returntimestamp;}}MyClientDatagramSocket.javaimport.*;importjava.io.*;publicclassMyClientDatagramSocketextendsDatagramSocket{staticfinalintMAX_LEN=100;MyClientDatagramSocketthrowsSocketException{super;}MyClientDatagramSocket(intportNo)throwsSocketException{super(portNo);}publicvoidsendMessage(InetAddressreceiverHost,intreceiverPort,Stringmessage)throwsIOException{byte[]sendBuffer=message.getBytes;DatagramPacketdatagram=newDatagramPacket(sendBuffer,sendBuffer.length,receiverHost,receiverPort);this.send(datagram);}publicStringreceiveMessagethrowsIOException{byte[]receiveBuffer=newbyte[MAX_LEN];DatagramPacketdatagram=newDatagramPacket(receiveBuffer,MAX_LEN);this.receive(datagram);Stringmessage=newString(receiveBuffer);returnmessage;}}效劳端:DaytimeServer1.javaimportjava.io.*;importjava.util.Date;publicclassDaytimeServer1{publicstaticvoidmain(String[]args){intserverPort=13;if(args.length==1)serverPort=Integer.parseInt(args[0]);try{MyServerDatagramSocketmySocket=newMyServerDatagramSocket(serverPort);System.out.println(“Daytimeserverready.“);while(true){DatagramMessagerequest=mySocket.receiveMessageAndSender;System.out.println(“Requestreceived“);Datetimestamp=newDate;System.out.println(“timestampsent:“+timestamp.toString);timestamp.toString);}

mySocket.sendMessage(request.getAddress,request.getPort,}catch(Exceptionex){System.out.println(“Thereisaproblem:“+ex);}}}MyServerDatagramSocket.javaimport.*;importjava.io.*;publicclassMyServerDatagramSocketextendsDatagramSocket{staticfinalintMAX_LEN=100;MyServerDatagramSocket(intportNo)throwsSocketException{super(portNo);}publicvoidsendMessage(InetAddressreceiverHost,intreceiverPort,Stringmessage)throwsIOException{byte[]sendBuffer=message.getBytes;DatagramPacketdatagram=newDatagramPacket(sendBuffer,sendBuffer.length,receiverHost,receiverPort);this.send(datagram);}publicStringreceiveMessagethrowsIOException{byte[]receiveBuffer=newbyte[MAX_LEN];DatagramPacketdatagram=newDatagramPacket(receiveBuffer,MAX_LEN);this.receive(datagram);Stringmessage=newString(receiveBuffer);returnmessage;}publicDatagramMessagereceiveMessageAndSenderthrowsIOException{byte[]receiveBuffer=newbyte[MAX_LEN];DatagramPacketdatagram=newDatagramPacket(receiveBuffer,MAX_LEN);this.receive(datagram);DatagramMessagereturnVal=newDatagramMessage;returnVal.putVal(newString(receiveBuffer),datagram.getAddress,));}}

returnreturnVal;

datagram.getPort(DatagramMessage.javaimport.*;publicclassDatagramMessage{privateStringmessage;privateInetAddresssenderAddress;privateintsenderPort;publicvoidputVal(Stringmessage,InetAddressaddr,intport){this.message=message;this.senderAddress=addr;this.senderPort=port;}publicStringgetMessage{returnthis.message;}publicInetAddressgetAddress{returnthis.senderAddress;}publicintgetPort{returnthis.senderPort;}}socketdaytime系;客户端:效劳端:共有的:MyStreamSocket.javaimport.*;importjava.io.*;publicclassMyStreamSocketextendsSocket{privateSocketsocket;privateBufferedReaderinput;privatePrintWriteroutput;MyStreamSocket(InetAddressacceptorHost,intacceptorPort)throwsSocketException,IOException{socket=newSocket(acceptorHost,acceptorPort);setStreams;}MyStreamSocket(Socketsocket) throwsIOException{this.socket=socket;setStreams;}privatevoidsetStreamsthrowsIOException{InputStreaminStream=socket.getInputStream;input=newBufferedReader(newInputStreamReader(inStream));OutputStreamoutStream=socket.getOutputStream;output=newPrintWriter(newOutputStreamWriter(outStream));}publicvoidsendMessage(Stringmessage)throwsIOException{output.println(message);output.flush;}publicStringreceiveMessagethrowsIOException{Stringmessage=input.readLine;returnmessage;}}客户端:DaytimeClient2.javaimportjava.io.*;publicclassDaytimeClient2{publicstaticvoidmain(String[]args){InputStreamReaderis=newInputStreamReader(System.in);BufferedReaderbr=newBufferedReader(is);try{client.\n“+

System.out.println(“theDaytime“Whatisthenameoftheserverhost“);StringhostName=br.readLine;if(hostName.length==0)hostName=“localhost“;System.out.println(“Whatistheportnumberoftheserverhost“);fromtheserver“portNum));}

StringportNum=br.readLine;if(portNum.length==0)portNum=“13“;System.out.println(“Hereisthetimestampreceived+DaytimeClientHelper2.getTimestamp(hostName,catch(Exceptionex){ex.printStackTrace;}}}DaytimeClientHelper2.javaimport.*;publicclassDaytimeClientHelper2{publicstaticStringgetTimestamp(StringhostName,StringportNum)throwsException{Stringtimestamp=““;InetAddressserverHost=InetAddress.getByName(hostName);intserverPort=Integer.parseInt(portNum);System.out.println(“Connectionrequestmade“);MyStreamSocketmySocket=newMyStreamSocket(serverHost,serverPort);timestamp=mySocket.receiveMessage;mySocket.close;returntimestamp;}}效劳端:DaytimeServer2.javaimportjava.io.*;import.*;importjava.util.Date;publicclassDaytimeServer2{publicstaticvoidmain(String[]args){intserverPort=13;if(args.length==1)serverPort=Integer.parseInt(args[0]);try{ServerSocketmyConnectionSocket=newServerSocket(serverPort);System.out.println(“Daytimeserverready.“);while(true){System.out.println(“Waitingforaconnection.“);MyStreamSocketmyDataSocket=newMyStreamSocket(myConnectionSocket.accept);System.out.println(“Aclienthasmadeconnection.“);Datetimestamp=newDate;System.out.println(“timestampsent:“+timestamp.toString);myDataSocket.sendMessage(timestamp.toString);myDataSocket.close;}}catch(Exceptionex){ex.printStackTrace;}}}socketecho系;客户端:EchoClient1.javaimportjava.io.*;publicclassEchoClient1{staticfinalStringendMessage=“.“;publicstaticvoidmain(String[]args){InputStreamReaderis=newInputStreamReader(System.in);BufferedReaderbr=newBufferedReader(is);try{System.out.println(“theEchoclient.\n“+“Whatisthenameoftheserverhost“);StringhostName=br.readLine;if(hostName.length==0)hostName=“localhost“;System.out.println(“Whatistheportnumberoftheserverhost“);

StringportNum=br.readLine;if(portNum.length==0)portNum=“7777“;EchoClientHelper1helper=newEchoClientHelper1(hostName,portNum);booleandone=false;Stringmessage,echo;while(!done){System.out.println(“Enteralinetoreceiveanechobackfromtheserver,“+“orasingleperoidtoquit.“);message=br.readLine;if((message.trim).equals(endMessage)){done=true;helper.done;}else{echo=helper.getEcho(message);System.out.println(echo);}}}catch(Exceptionex){ex.printStackTrace;}}}EchoClientHelper1.javaimport.*;importjava.io.*;publicclassEchoClientHelper1{privateMyClientDatagramSocketmySocket;privateInetAddressserverHost;privateintserverPort;EchoClientHelper1(StringhostName,StringportNum)throwsSocketException,UnknownHostException{this.serverHost=InetAddress.getByName(hostName);this.serverPort=Integer.parseInt(portNum);this.mySocket=newMyClientDatagramSocket;}publicStringgetEcho(Stringmessage)throwsSocketException,IOException{Stringecho=““;mySocket.sendMessage(serverHost,serverPort,message);echo=mySocket.receiveMessage;returnecho;}publicvoiddonethrowsSocketException{mySocket.close;}}MyClientDatagramSocket.javaimport.*;importjava.io.*;publicclassMyClientDatagramSocketextendsDatagramSocket{staticfinalintMAX_LEN=100;MyClientDatagramSocketthrowsSocketException{super;}MyClientDatagramSocket(intportNo)throwsSocketException{super(portNo);}publicvoidsendMessage(InetAddressreceiverHost,intreceiverPort,Stringmessage)throwsIOException{byte[]sendBuffer=message.getBytes;DatagramPacketdatagram=newDatagramPacket(sendBuffer,sendBuffer.length,receiverHost,receiverPort);this.send(datagram);}publicStringreceiveMessagethrowsIOException{byte[]receiveBuffer=newbyte[MAX_LEN];DatagramPacketdatagram=newDatagramPacket(receiveBuffer,MAX_LEN);this.receive(datagram);Stringmessage=newString(receiveBuffer);returnmessage;}}效劳端:EchoServer1.javaimportjava.io.*;publicclassEchoServer1{publicstaticvoidmain(String[]args){intserverPort=1117;if(args.length==1)serverPort=Integer.parseInt(args[0]);try{MyServerDatagramSocketmySocket=newMyServerDatagramSocket(serverPort);System.out.println(“Echoserverready.“);while(true){DatagramMessagerequest=mySocket.receiveMessageAndSender;System.out.println(“Requestreceived“);Stringmessage=request.getMessage;System.out.println(“messagereceived:“+message);}}

mySocket.sendMessage(request.getAddress,request.getPort,message);catch(Exceptionex){ex.printStackTrace;}}}MyServerDatagramSocket.javaimport.*;importjava.io.*;publicclassMyServerDatagramSocketextendsDatagramSocket{staticfinalintMAX_LEN=100;MyServerDatagramSocket(intportNo)throwsSocketException{super(portNo);}publicvoidsendMessage(InetAddressreceiverHost,intreceiverPort,Stringmessage)throwsIOException{byte[]sendBuffer=message.getBytes;DatagramPacketdatagram=newDatagramPacket(sendBuffer,sendBuffer.length,receiverHost,receiverPort);this.send(datagram);}publicStringreceiveMessagethrowsIOException{byte[]receiveBuffer=newbyte[MAX_LEN];DatagramPacketdatagram=newDatagramPacket(receiveBuffer,MAX_LEN);this.receive(datagram);Stringmessage=newString(receiveBuffer);returnmessage;}publicDatagramMessagereceiveMessageAndSenderthrowsIOException{byte[]receiveBuffer=newbyte[MAX_LEN];DatagramPacketdatagram=newDatagramPacket(receiveBuffer,MAX_LEN);this.receive(datagram);DatagramMessagereturnVal=newDatagramMessage;returnVal.putVal(newString(receiveBuffer),datagram.getAddress,));}}

returnreturnVal;

datagram.getPort(DatagramMessage.javaimport.*;publicclassDatagramMessage{privateStringmessage;privateInetAddresssenderAddress;privateintsenderPort;publicvoidputVal(Stringmessage,InetAddressaddr,intport){this.message=message;this.senderAddress=addr;this.senderPort=port;}publicStringgetMessage{returnthis.message;}publicInetAddressgetAddress{returnthis.senderAddress;}publicintgetPort{returnthis.senderPort;}}用流式socket实现的echo应用程序包的构架,列明各程序之间的关系。共有的:MyStreamSocket.javaimport.*;importjava.io.*;publicclassMyStreamSocketextendsSocket{privateSocketsocket;privateBufferedReaderinput;privatePrintWriteroutput;MyStreamSocket(InetAddressacceptorHost,intacceptorPort)throwsSocketException,IOException{socket=newSocket(acceptorHost,acceptorPort);setStreams;}MyStreamSocket(Socketsocket) throwsIOException{this.socket=socket;setStreams;}privatevoidsetStreamsthrowsIOException{InputStreaminStream=socket.getInputStream;input=newBufferedReader(newInputStreamReader(inStream));OutputStreamoutStream=socket.getOutputStream;output=newPrintWriter(newOutputStreamWriter(outStream));}publicvoidsendMessage(Stringmessage)throwsIOException{output.println(message);output.flush;}publicStringreceiveMessagethrowsIOException{Stringmessage=input.readLine;returnmessage;}}客户端:EchoClient2.javaimportjava.io.*;publicclassEchoClient2{staticf?inalStringendMessage=“.“;publicstaticvoidmain(String[]args){InputStreamReaderis=newInputStreamReader(System.in);BufferedReaderbr=newBufferedReader(is);try{+serverhost“);

System.out.println(“theEchoclient.\n““Whatisthenameoftheserverhost“);StringhostName=br.readLine;if(hostName.length==0)hostName=“localhost“;System.out.println(“WhatistheportnumberoftheStringportNum=br.readLine;if(portNum.length==0)portNum=“7“;EchoClientHelper2helper=newEchoClientHelper2(hostName,portNum);booleandone=false;Stringmessage,echo;while(!done){System.out.println(“Enteralinetoreceiveanecho“toquit.“);

+“fromtheserver,orasingleperiodmessage=br.readLine;if((message.trim).equals(endMessage)){done=true;helper.done;}else{echo=helper.getEcho(message);System.out.println(echo);}}}catch(Exceptionex){ex.printStackTrace;}}}EchoClientH

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论