栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

多播(Multicast)的原理与java代码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多播(Multicast)的原理与java代码

多播(multicast): 可以进行 ‘一对一’ 或者 ‘一对多’ 的 传输。

        使用 D 类 IP 地址: (224.0.0.0, 239.255.255.255] 

        多播的存在意义: 比单播高效,比广播精准

单播,多播,广播的对比:

单播Unicast

广播Broadcast

多播Multicast

Mechanism

机制上:

sender传输给广播域(broadcast domain)中的所有receiver

sender传输给多播组(multicast group)中 receiver

Bandwidth

带宽上:

一对一的传输方式可能会出现严重的网络拥塞

多播将单个信息发送给加入’多播组’中的接收者。(只传输一个数据包会显著减少通信量,从而最大限度地利用网络带宽。)

Protocol

协议上:

单播应用程序可以在传输层使用TCP或UDP

多播应用程序使用UDP。

(因此,应用层必须为多播操作提供可靠性数据传输机制,例如序列号、计时器和重传。)

Sender 发送方代码:

import java.io.*;
import java.net.*;
import java.util.*;
public class MultiC_S {
	public static void main(String[] ar) throws IOException {
		Scanner sc = new Scanner(System.in);
		System.out.print("Message = ");
		String str = sc.next();
		
		InetAddress ia = InetAddress.getByName("239.255.255.255");
		DatagramPacket dp = new DatagramPacket(str.getBytes(), str.getBytes().length, 
				ia, 10000); //数值(10000)与receiver中一致
		MulticastSocket ms = new MulticastSocket();
		ms.send(dp);
		ms.close();
	}
}

 

Receiver 接收方代码:

import java.io.*;
import java.net.*;
import java.util.*;
public class MultiC_R {
	public static void main(String[] ar) throws IOException {
		DatagramPacket dp = new DatagramPacket(new byte[1000], 1000);
		
		MulticastSocket ms = new MulticastSocket(10000); //数值与sender中一致
		InetAddress ia = InetAddress.getByName("239.255.255.255");
		
		ms.joinGroup(ia);	//加入多播组
		ms.receive(dp);
		ms.leaveGroup(ia);
		ms.close();
		
		System.out.println("Sender = " + dp.getAddress().getHostAddress());
		System.out.print("Message = " + new String(dp.getData()));
		
	}
}

cmd运行结果

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/845180.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号