一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java使用MulticastSocket實現組播

java使用MulticastSocket實現組播

2021-06-28 09:51穆穆里 Java教程

這篇文章主要為大家詳細介紹了java使用MulticastSocket實現組播,具有一定的參考價值,感興趣的小伙伴們可以參考一下

組播是一種允許源進程將數據包發送到多個目標進程的網絡技術。組播源將數據包發送到特定組播組,只有屬于該組播組的進程才能接收到數據包。這些進程可以是在同一個物理網絡,也可以來自不同的物理網絡(只要有組播路由器支持)。

組播分為無連接和面向連接組播,但是基本的組播機制是無連接的,我們這里所講的也是無連接組播。

我們說過使用multicastsocket類,這個類叫組播數據報套接字類,主要用來發送和接收ip組播報文。multicastsocket是datagramsocket的子類,它增加了加入和離開組播組的功能。組播組通過一個d類ip地址和一個標準udp端口號的組合來定義。d類ip地址的范圍是224.0.0.0~239.255.255.255,除了224.0.0.0是保留地址,不應使用。

下面我們用一個簡單的示例演示兩個進程如何使用組播進行通信,這兩個進程一個是發送端進程,另一個是接收端進程。

我們看代碼:

sender.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.net.datagrampacket;
import java.net.inetaddress;
import java.net.multicastsocket;
 
public class sender {
 
 public static void main(string[] args) {
 try {
  byte[] msg = new byte[] { 'h', 'e', 'l', 'l', 'o' };
  inetaddress inetaddress = inetaddress.getbyname("230.0.0.1");//根據主機名返回主機的ip地址
  datagrampacket datagrampacket = new datagrampacket(msg, msg.length, inetaddress, 7777);//數據包包含消息內容,消息長度,組播ip和端口
  multicastsocket multicastsocket = new multicastsocket();
  multicastsocket.send(datagrampacket);//發送數據包
 } catch (exception exception) {
  exception.printstacktrace();
 }
 }
}

receiver.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.net.datagrampacket;
import java.net.inetaddress;
import java.net.multicastsocket;
 
public class receiver {
 public static void main(string[] arstring) {
 try {
  multicastsocket multicastsocket = new multicastsocket(7777);//創建組播套接字并綁定到發送端口
  inetaddress inetaddress = inetaddress.getbyname("230.0.0.1");
  multicastsocket.joingroup(inetaddress);//組播套接字加入組播組
  
  while (true) {
  byte[] data = new byte[100];
  datagrampacket datagrampacket = new datagrampacket(data,data.length);//創建一個用于接收數據的數據包
  multicastsocket.receive(datagrampacket);//接收數據包
  system.out.println(new string(data));
  }
 } catch (exception exception) {
  exception.printstacktrace();
 }
 }
}

使用multicastsocket實現組播的要點如下:

接收方:加入組播組;
發送方:發送包含組地址的數據報。

順便提一下組播實現私信的做法:我們可以在消息頭部加上指定接收者地址,然后使用組播的方式發送,關鍵在接收的時候檢查該地址,如果跟匹配該地址,就接收并處理;如果不匹配當然就拋棄。當然這明顯有安全問題,以后找到解決辦法或者單播機制再另寫一篇博文了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/whoami021/article/details/21337651

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲日韩欧美一区二区在线 | 欧美日韩亚洲成人 | 国产成人精品一区二区阿娇陈冠希 | 国产亚洲一区二区三区 | 我与恶魔的h生活ova | 精品国产原创在线观看视频 | 亚洲精品青青草原avav久久qv | 欧美性色老妇人 | 欧美一级片免费在线观看 | 日韩一级生活片 | 99久久精品国产免费 | 日本视频高清免费观看xxx | 成人福利网站含羞草 | 国产精品久久久久久久久久久威 | 久草热8精品视频在线观看 久草草在线视视频 | 日本在线观看www鲁啊鲁视频 | 女性全身裸露无遮挡 | 手机看片日韩1024你懂的首页 | 三上悠亚久久国产 | 人人爱天天做夜夜爽88 | 亚洲 另类 欧美 变态屎尿 | 轻轻色在线视频中文字幕 | 国产成人免费 | 99久久99久久久精品齐齐鬼色 | ccc在线在线36 | 久久 这里只精品 免费 | 公交车高h| 国内精品视频一区二区三区八戒 | 毛片 ftp | japanesemoms乱熟 | 国产乱子伦一区二区三区 | 国内精品久久久久影院男同志 | 亚洲国产成人99精品激情在线 | 明星ai人脸替换脸忘忧草 | 四虎精品视频在线永久免费观看 | 久久久影院亚洲精品 | 亚洲精品黄色 | 免费视频左左视频 | 国产精品美女福利视频免费专区 | 亚洲丰满女人ass硕大 | 男男按摩1069gⅴ |