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

下载本文档

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

文档简介

分布式系统导论实验报告2015.5.25实验二无连接的数据报Sockets实验目的尝试实现一个无连接的数据报Socket进程间通信。二.实验内容创建两个进程,使用无连接数据报Socket实现交换一个字符串。一个叫做Sender.java,用于向一个名为Receiver.java.的进程发送一个字符串。Sender.java需要一个命令行参数,用于表示传递消息的端口号.Receiver.java需要一个命令行参数用于表示接受消息的端口号。接受方需要阻塞直到从发送放收到一个消息。如果发送放在接受运行之前发送出消息,消息会丢失。这种情况在此实验中是允许的。三.实验主要功能实现说明程序源代码//Sender.javapackagedsi;importjava.io.IOException;import.DatagramPacket;import.DatagramSocket;import.InetAddress;importjava.util.Scanner;publicclassSender{publicvoidinit()throwsIOException{try{DatagramSocketsocket=newDatagramSocket();//创建数据报socket并将其绑定在本地默认IP地址的默认端口上Scannerscan=newScanner(System.in);while(scan.hasNextLine()){byte[]sendData=scan.nextLine().getBytes();//接收键盘输入,并把输入信息放到字节数组中DatagramPacketoutPacket=newDatagramPacket(sendData,sendData.length,InetAddress.getByName(""),8080);//创建数据报包,指定发送的字节数组和接受方的地址socket.send(outPacket);//激活socket的send方法,并引用这个数据报包}}catch(Exceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args)throwsIOException{newSender().init();}}//Receiver.javaimportjava.io.IOException;import.DatagramPacket;import.DatagramSocket;publicclassReceiver{publicvoidinit()throwsIOException{try{DatagramSocketsocket=newDatagramSocket(8080);//创建数据报socket并将其绑定在本地默认IP地址的指定端口byte[]inBuff=newbyte[4096];while(true){DatagramPacketinPacket=newDatagramPacket(inBuff,inBuff.length);//创建数据报包,将接收到的消息放到指定字节数组中socket.receive(inPacket);//激活socket的Receive方法,并引用这个数据报包System.out.println("收到:"+newString(inBuff,0,inPacket.getLength()));//打印接收到的消息}}catch(Exceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args)throwsIOException{newReceiver().init();}}实验结果运行Sender,发送消息:hello和12345运行Receiver,接收到消息hello和12345实验4.多播实验目的创建进程之间的多播。二.实验内容MulticastSender.java用于发送多播消息给多播接收程序。多播IP地址是端口号为1234。MulticastReceiver.java用于接收多播消息并显示消息。三.实验主要功能实现说明程序源代码//MulticastSender.javaimport.DatagramPacket;import.InetAddress;import.MulticastSocket;publicclassMulticastSender{privateintport;privateStringhost;privateStringdata;publicMulticastSender(Stringdata,Stringhost,intport){this.data=data;this.host=host;this.port=port;}publicvoidsend(){try{InetAddressip=InetAddress.getByName(this.host); DatagramPacketpacket=newDatagramPacket(this.data.getBytes(),this.data.length(),ip,this.port);//创建数据报包,指定发送的字节数组和接受方的地址MulticastSocketms=newMulticastSocket();//使用本机默认地址、随机端口来创建MulticastSocket对象ms.send(packet);//激活send方法,广播消息ms.close();}catch(Exceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args){intport=1234;Stringhost="";Stringdata="helloworld.";System.out.println(data);MulticastSenderms=newMulticastSender(data,host,port);ms.send();}}//MulticastReceiver.javaimport.DatagramPacket;import.InetAddress;import.MulticastSocket;publicclassMulticastReceiver{privateintport;privateStringhost;publicMulticastReceiver(Stringhost,intport){this.host=host;this.port=port;}publicvoidreceive(){byte[]data=newbyte[256];try{InetAddressip=InetAddress.getByName(this.host);MulticastSocketms=newMulticastSocket(this.port);//使用本机默认地址、指定端口来创建对象ms.joinGroup(ip);//将该MulticastSocket加入到指定的多点广播地址DatagramPacketpacket=newDatagramPacket(data,data.length);//创建数据报包,将接收到的消息放到指定字节数组中ms.receive(packet);//激活Receive方法,接收消息Stringmessage=newString(packet.getData(),0,packet.getLength());System.out.println(message);//打印接收到的消息ms.close();}catch(Exceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args){intport=1234;

温馨提示

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

评论

0/150

提交评论