分享
 
 
 

基于组播(IP多播)技术的即时通信工具

王朝java/jsp·作者佚名  2006-02-01
窄屏简体版  字體: |||超大  

基于组播(IP多播)技术的即时通信工具

02计2刘晓明 200201020219同组人:李贝,王强

组播即IP多播技术始于上世纪80年代,1988年Steve Deering首次在其博士论文当中提出IP多播的概念。1992年3月的IETF在因特网范围首次实现IETF会议声音的多播,当时有20个网点可同时听到会议声音。IP多播由于源点发送,多点接收的特点,即一对多的通信,广泛应用于实时信息交付(如新闻,股市行情等),软件更新,交互式会议,流媒体传播等等。关于组播可以参考[W-MCAST]。

在TCP/IP通信中有三种通信方式,即单播,广播和组播。单播为一对一的信息传送,对服务质量要求高。广播为使用子网内的特殊IP地址,IP地址最后一段为255的地址,进行广播,子网内所有电脑均可收到数据报,通信量巨大,智能低,所以并不被允许跨越网段。而组播使用了IP分组的概念,在路由中建立IP组,并在子网中充分利用硬件多播的方式进行信息传送,组播通过路由的传送是允许跨越网段的。而由于在子网中利用了硬件多播的方法,不参加组播组的电脑不会收到组播数据报,所以即实现了广播又有效控制了流量,增大了广播范围。

笔者曾经在所在的局域网内组建过FreeICQ服务器,一个免费的即时通信工具,但由于FreeICQ有一个服务器端,所以在使用过程中带来诸多不便。

1. 服务器地址的识别。我使用ADSL上网方式,常常更改IP地址,而一些动态域名解析软件又需要我时刻在线才能进行地址解析,成本太高。

2. 开机时间。必须保证服务器开机,才能使客户端开始工作,对学生来说困难太多,另外个人经历有限。

3. 使用的方便性,尽管已经有了很多的即时通信工具,但是都需要上网时才能使用,对一般用户来讲,在同一局域网内并不方便。

而除了这种基于C/S,单播模式的即时通信工具之外,还有一种至今仍然不成气候的广播聊天室。广播使用的是IP地址最后一段为255的IP地址,发送的数据报所有在同一IP段内的电脑都可以收到,但是最大通信范围也就是这253台电脑(除去最后一段为0和255的,网关,DNS等等还不算)。而且由于所有电脑都会收到,所以通信量很大,很容易被恶意的客户端使用DoS进行攻击而停止工作。优点就是最早实现了无服务器。

组播使用IPv4网络中的D类IP地址,范围从224.0.0.0至239.255.255.255,在这个范围当中没有任何主机,而专门用于组播,所以D类IP不允许出现在任何形式的源地址当中。在组播开始时进程首先申请加入一个组播组,之后由主机向路由器发出加入组播组的申请,路由器在向所有可以联系到的路由器发出申请以便用于接收组播数据。这样就完成了加入组播组的工作。而发送组播数据时,先对数据打包进一个UDP数据报然后发送到路由器,路由器再寻找可以联系到的路由当中使用同一个组的路由,并进行转发。不在同一组的路由和主机不会接到本组的数据报。通过这种方式即扩大了通信范围又有效的抑止通信数据量。

组播使用IGMP协议(Internet Group Management Protocol)进行管理,对应[RFC1112]和[RFC2236]。IGMP协议已经成为TCP/IP协议标准的一部分了,要进行组播的主机也必须要有IGMP协议的支持。但是同时,组播也必须要有支持组播的路由器的支持,在已有的部分路由器当中,组播并不是默认启动的服务。

本文实现的软件Multicast Messenger使用Java语言写成,运行环境为JRE1.4.2。软件实现分为三部分,通信核心类MC-Core,核心测试类MCTest,主程序MCM。至本文时最新版本为v1.2。

通信核心类有如下四个类:

l cn.heut.gashero.multicast.IMultiCastRadio。定义了客户端监听组播信息的事件接口。

l cn.heut.gashero.multicast. NotMultiCastAddressException。当输入的IP地址不是一个有效的组播地址时,抛出的异常类。

l cn.heut.gashero.multicast.MultiCastRadio。接收组播数据的类,使用多线程阻塞监听一个组播地址和对应端口。并在收到信息后使用二进制和字符串两种方式提供给客户。

l cn.heut.gashero.multicast.MultiCastSender。发送组播数据的类,在加入组播组之后负责将输入数据转换成二进制数据,加入UDP数据报后发送给组播组。

核心测试类专门用于测试通信核心的工作,以找出bug和提供给第三方开发者以使用示例。含有2个类:

l MCRadio。用于测试接收数据。

l MCSender。用于测试发送数据。

他们都是控制台模式的应用程序,提供了最基本的测试功能。

主程序类包含了主窗体和设置窗体2个类,还调用了我写的系统日志类。

l MCMsg。主窗体类,实现了聊天室的主框架和基本逻辑,对通信核心类的调用也在这里面。

l MCSetting。设置窗体类,可以设置组播地址和端口,另外还将设置保存到文件当中。

l cn.heut.gashero.system.Logger。系统日志类,用于在程序运行的过程中记录运行日志,以提供给用户更多的信息和便于调试。

软件当中我对通信核心类进行了特别的封装以便于在未来可以有更多的开发者可以更方便的使用组播方式进行编程。通信接口我也使用了字符串和二进制两种方式,对一些高级应用,比如对象序列化和数据加密等等,有经历的开发者可以另外改造二进制通信方式。

作为一个实用性很强的软件,我并不仅仅为了比赛而写作它,而是要作为一个有用的软件继续升级开发,从第一个版本的运行成功至今,至写作时已经是v1.2版本了。在后来的版本当中我会分别加入更好的界面,对数据传输进行加密,为方便网络管理员而使用的组播数据监听器和不对称加密的用户互相识别和聊天记录管理等等。

本软件已经声明符合GPL协议,并且已经开始在我的个人主页上发布,使用时推荐到我的个人主页http://e5022.wx-e.com/mcm.htm下载最新版本。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有