- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ip组播实验报告
南华大学
计算机科学与技术学院
实 验 报 告
( 2012 ~2013 学年度 第 2 学期 )
课程名称 分布式计算实验 实验名称 Ip 组播:组通信的实现
姓名 谢志兴 学号 20104440115
专业 计算机科学与技术 班级 计算机一班
地点 520宿舍 教师 李 萌
一、实验目的:
了解JAVA,Eclipse + JDK.NET,VS201 + .NET Framework实现ip组播(组通信)。
三、实验平台:
操作系统:Windows 7
编程工具:MyEclipse
四、程序代码:
import java.net.*;
import java.io.*;
public class MulticastPeer {
public static void main(String args[]){
MulticastSocket s=null;
try{
InetAddress
group=InetAddress.getByName(225.0.0.1);
s=new MulticastSocket(6789);
s.joinGroup(group);
DataInputStream sIN=new DataInputStream(System.in);
BufferedInputStream bf=new
BufferedInputStream(sIN);
byte[]m=new byte[1000];
bf.read(m);
DatagramPacket messageOut=new
DatagramPacket(m,m.length,group,6789);
s.send(messageOut);
byte[]buffer=new byte[1000];
for(int i=0;i10;i++)
{
System.out.println( );
DatagramPacket messageIn=new DatagramPacket(buffer,buffer.length);
s.receive(messageIn);
System.out.println(Received:+new String(messageIn.getData()));
}
s.leaveGroup(group);
}
catch(SocketException e){ System.out.println(Socket:+e.getMessage()); }
catch(IOException e){ System.out.println(IO:+e.getMessage()); }
finally{if(s!=null)s.close();}
}
}
五、实验运行结果:
(1)运行程序
(2)输入信息
(3)确认输入信息后
六、实验总结分析:
通过本次试验我了解了组播是进程组成员之间的通信。IP组播提供了一个既可用于局域网又可用于因特网的组播服务。这种形式的组播与UDP数据报具有相同的故障语义,除例如会有遗漏故障外,它对许多组播应用是一个很有用的工具。
这次试验还让我了解了组播通信的原理:Java API通过类MulticastSocket提供IP组播的数据报接口,类MulticastSocket是DatagramSocket的子类,具有加入组播组的能力。类MulticastSocket提供了两个构造函数,允许用一个自定的本地端口(例如,程序所示的6789)或任何空闲的本地端口创建套接字。一个进程可调用它的组播套接字的joinGroup方法用一个给定的组播地址加入到一个组播组。实际上,套接字在给定端口加入到一个组播组,它将接受其它计算机上的进程发送到这个端口上的给这个组的数据报。进程通过调用它的组播套接字的leaveGroup方法离开自定的组。程序中,main方法的参数制定了要组播的消息和组的组播地址(例如程序225.0.0.1中)。在加入到组播组后,进程生成包含消息的DatagramPacket实例,并通过组播套接字将该消息发送到端口6789上的组播组地址,它试图通过它的套接字从其他同属同一端口上的组成员处接收3个组播消息。当该程序的几个实例同时在不同的计算机运行时,它们都加入到同一个组,它们中的每一个接收自己的消息和来自同一组的消息。
文档评论(0)