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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产手机在线观看 | 777午夜精品免费播放 | 精品美女国产互换人妻 | 12345国产精品高清在线 | 久久中文骚妇内射 | 王的视频视ivk | 黑帮少爷爱上我第8集最新 荷兰精品女人性hd 和日本免费不卡在线v | 四虎com| 色老太bbbbb| 97就去干 | 四虎1515hhc0m | 全日爱韩国视频在线观看 | 日本美女视频韩国视频网站免费 | 小女生RAPPER入口| 亚洲首页国产精品丝袜 | 婷婷综合久久中文字幕 | 大妹子最新视频在线观看 | 日本三级斤 | 国产美女亚洲精品久久久综合91 | 欧美va天堂va视频va在线 | 99精品国产自在现线观看 | 久久亚洲电影www电影网 | 美女被躁了在线观看视频 | 大又大又粗又爽女人毛片 | 亚洲一区二区三区在线播放 | www.成人在线视频 | 欧美x×x| 手机看片国产自拍 | 日韩在线视频免费不卡一区 | 性柔术xxxhd| 成年视频在线观看 | 国产做a爰片久久毛片 | 精新精新国产自在现拍 | 别停好爽好深好大好舒服视频 | 亚洲国产99 | 免费视频 久久久 | 91麻豆影视 | 免费人成在线观看 | 日本一卡二卡3卡四卡网站精品 | 国产成人盗拍精品免费视频 | 好大好爽好涨太深了小喜 |