欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

MulticastSocket 廣播學習

系統 1733 0

使用MulticastSocket實現多點廣播

?

DatagramSocket只允許數據報發送給指定的目標地址,而MulticastSocket可以將數據報以廣播的方式發送到多個客戶端

?

若要使用多點廣播,則需要讓一個數據報標有一組目標主機地址,當數據報發出后,整個組的所有所有主機都能收到該數據報。IP多點廣播(或多點發送)實現了將單一信息發送到多個接受者的廣播,其思想是設置一組特殊網絡地址作為多點廣播地址,每一個多點廣播地址都被看做一個組,當客戶端需要發送、接收廣播信息時,加入到改組即可。

MulticastSocket既可以將數據報發送到多點廣播地址,也可以接收其他主機的廣播信息。

?

MulticastSocket 廣播學習

?

? ? MulticastSocket有點像DatagramSocket,事實上MulitcastSocket是DatagramSocket的一個子類,當要發送一個數據報時,可以使用隨機端口創建一個MulticastSocket,也可以在指定端口創建MulticastSocket。MulticastSocket提供了如下3個構造器。

1、MulticastSocket():使用本機默認地址、隨機端口來創建MulticastSocket對象

2、MulticastSocket(int portNumber)使用本機默認地址、指定端口來創建對象

3、MulticastSocket(SocketAddress bindaddr):使用本機指定IP地址、指定端口來創建對象

?

? ? 創建MulticastSocket對象后,還需要將該MulticastSocket加入到指定的多點廣播地址,MulticastSocket使用joinGroup()方法加入指定組;使用leaveGroup()方法脫離一個組。

1、joinGroup(InetAddress multicastAddr):將該MulticastSocket加入指定的多點廣播地址。

2、leaveGroup(InetAddress multicastAddr):讓該MulticastSocket離開指定的多點廣播地址。

?

應用程序只將數據報包發送給組播地址,路由器將確保包被發送到改組播組中的所有主機 。?
組播地址: 稱為組播組的 一組主機所共享的地址 。組播地址的范圍在224.0.0.0---? 239.255.255.255之間(都為D類地址 1110開頭)。?

備注:如果現在有三臺機器A、B、C,三臺機器IP地址都不一樣,A\B為server監聽廣播消息,C為客戶端發送廣播消息, 個人理解 是將A、B兩臺機器的MulticastSocket對象綁定在組播地址中的其中一個,然后C客戶端發送消息的組播地址一致,則A、B就能夠接收C發送的消息。

?

?

如果MulticastSocket用于接收信息則使用默認地址和隨機端口即可,但是如果用來接收信息,則必須要指定端口,否則發送方無法確定發送數據報的目標端口

?

      package hb.brodcast;

import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;

public class MulticastListener {
	private int port;
	private String host;

	public MulticastListener(String host, int port) {
		this.host = host;
		this.port = port;
	}

	public void listen() {
		byte[] data = new byte[256];
		try {
			InetAddress ip = InetAddress.getByName(this.host);
			MulticastSocket ms = new MulticastSocket(this.port);
			ms.joinGroup(ip);
			DatagramPacket packet = new DatagramPacket(data, data.length);
			//receive()是阻塞方法,會等待客戶端發送過來的信息
			ms.receive(packet);
			String message = new String(packet.getData(), 0, packet.getLength());
			System.out.println(message);
			ms.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		int port = 1234;
		String host = "224.0.0.1";
		MulticastListener ml = new MulticastListener(host, port);
		while (true) {
			ml.listen();
		}
	}
}
    

?

      package hb.brodcast;

import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;

public class MulticastSender {
	private int port;
	private String host;
	private String data;

	public MulticastSender(String data, String host, int port) {
		this.data = data;
		this.host = host;
		this.port = port;
	}

	public void send() {
		try {
			InetAddress ip = InetAddress.getByName(this.host);
			DatagramPacket packet = new DatagramPacket(this.data.getBytes(), this.data.length(), ip, this.port);
			MulticastSocket ms = new MulticastSocket();
			ms.send(packet);
			ms.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		int port = 1234;
		String host = "224.0.0.1";
		String data = "hello world.";
		System.out.println(data);
		MulticastSender ms = new MulticastSender(data, host, port);
		ms.send();
	}
}
    

?

? ? MulticastSocket用于發送、接收數據報的方法與DatagramSocket完全一樣。但MulticastSocket比DatagramSocket多了一個 setTimeToLive(int ttl)方法,該ttl參數用于設置數據報最多可以跨過多少個網絡 ,當ttl的值為0時,指定數據報應停留在本地主機;當ttl的值為1時,指定數據報發送到本地局域網;當ttl的值為32時,意味著只能發送到本站點的網絡上;當ttl的值為64時,意味著數據報應保留在本地區;當ttl的值為128時,意味著數據報應保留在本大洲;當ttl的值為255時,意味著數據報可發送到所有地方; 在默認情況下,該ttl的值為1

?

MulticastSocket 廣播學習


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 午夜影视免费 | 成人午夜免费福利 | 国产亚洲精品高清在线 | 日韩亚洲人成网站在线播放 | 色综合天天娱乐综合网 | 奇米色第四色 | 亚洲激情视频 | 青青草免费国产线观720 | 亚洲天堂视频在线观看免费 | 国产精品秒播无毒不卡 | 一区二区国产在线观看 | 91精品国产91久久久久久最新 | 国产高清一区二区 | 一二三区av| 成人精品国产 | 欧美日韩国产一区二区三区播放 | 欧美精品福利 | 毛片1毛片2毛片3毛片4 | 精品久久香蕉国产线看观看亚洲 | 欧美一性一看一免费视频 | 宝贝jojo第三季 | 久久伊人免费视频 | 久久精品国产亚洲 | 国产japan色系videos护士 日韩精品视频在线免费观看 | 妇女毛片 | 欧美激情综合色综合啪啪五月 | 蜜臀AV性色A片在线观看 | 91精品久久久久久久久久 | 99久久精品日本一区二区免费 | 色综合精品久久久久久久 | 欧美一区二区三区久久久 | 欧美黄色片一级 | 最新亚洲国产有精品 | 波多野结衣一区二区三区四区 | 久久久国产精品 | 日韩精品久久久久久久电影99爱 | 九九热最新地址 | 国产精品久久久久无码av | 草逼com| 国产精品福利在线 | 日日爽视频|