激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产一区精品视频 | 国产成人视屏 | 精品久久久久久综合日本 | 亚洲情av | 欧美a∨一区二区三区久久黄 | 国产精品美女久久久久久网站 | 亚洲国产高清自拍 | 欧美一级黄色免费 | 特级a欧美做爰片毛片 | 亚洲成人在线视频网站 | 国产亲子伦在线观看 | 成人三级电影网址 | 久久网国产精品 | 在线视频观看国产 | 网站激情 | 日本一区免费看 | 成人h精品动漫一区二区三区 | 成人一区二区在线观看视频 | 性爱视频在线免费 | 国产精品爱久久久久久久 | www.91sese| 污视频在线免费 | 婷婷亚洲一区二区三区 | 99最新地址 | 黄色免费播放网站 | 日韩毛片免费观看 | 久久久成人精品视频 | 免费国产wwwwwww网站 | 有色视频在线观看 | 国产欧美日韩视频在线观看 | 精品三级内地国产在线观看 | 日本不卡一区二区在线观看 | 午夜视频大全 | 亚洲第一页中文字幕 | 小视频免费在线观看 | 亚州综合网 | 中文字幕免费看 | 九色 在线 | 999久久国精品免费观看网站 | 久久久婷婷一区二区三区不卡 | 中文字幕天堂在线 |