java傳送接收組播(多播)資料包(UDP包)
全棧工程師開發手冊 (作者:欒鵬)
java傳送組播(多播)資料包。首先要加入組播組,然後才能向組播組傳送組播資料包和接收組播資料包。
以下程式碼,在區域網中測試有效。
測試程式碼
public static void main(String[] args)
{
final MulticastSocket socket=createMulticastGroupAndJoin("224.0.0.0",5000); //加入組播組,設定組播組的監聽埠為5000
new Thread(new Runnable() {
@Override
public void run() {
sendData(socket,"luanpeng".getBytes(),"224.0.0.0"); //向組播組傳送資料
}
}).start();
String message = recieveData(socket,"224.0.0.0");//接收組播組傳來的訊息
System.out.println(message);
}
建立一個組播組,並加入此組播組,多播地址為D類ip,目的地址為224.0.0.0~239.255.255.255
public static MulticastSocket createMulticastGroupAndJoin(String groupurl,int port) // 建立一個組播組並加入此組的函式
{
try {
InetAddress group = InetAddress.getByName(groupurl); // 設定組播組的地址為239.0.0.0
MulticastSocket socket = new MulticastSocket(port); // 初始化MulticastSocket類並將埠號與之關聯
socket.setTimeToLive(1); // 設定組播資料包的傳送範圍為本地網路
socket.setSoTimeout(10000); // 設定套接字的接收資料包的最長時間
socket.joinGroup(group); // 加入此組播組
return socket;
} catch (Exception e1) {
System.out.println("Error: " + e1); // 捕捉異常情況
return null;
}
}
向組播組傳送資料的函式,以UDP形式傳送
public static void sendData(MulticastSocket socket,byte[] data,String groupurl) // 向組播組傳送資料的函式
{
try {
InetAddress group=InetAddress.getByName(groupurl);
// 儲存在陣列中
DatagramPacket packet = new DatagramPacket(data, data.length, group, socket.getPort()); // 初始化DatagramPacket
socket.send(packet); // 通過MulticastSocket例項埠向組播組傳送資料
util.out("以UDP形式傳送組播報文");
} catch (Exception e1) {
System.out.println("Error: " + e1); // 捕捉異常情況
}
}
從組播組接收資料的函式
public static String recieveData(MulticastSocket socket,String groupurl)
{
String message;
try {
InetAddress group=InetAddress.getByName(groupurl);
byte[] data = new byte[512];
DatagramPacket packet=new DatagramPacket(data, data.length,group,socket.getPort());
socket.receive(packet); // 通過MulticastSocket例項埠從組播組接收資料
// 將接受的資料轉換成字串形式
message = new String(packet.getData());
} catch (Exception e1) {
System.out.println("Error: " + e1); // 捕捉異常情況
message = "Error: " + e1;
}
return message;
}
相關文章
- VC UDP接收 傳送 廣播UDP
- 【測試】echo傳送和接收TCP/UDP資料包|shell 傳送TCP/UDP資料包TCPUDP
- Udp廣播的傳送與接收(C#+UdpClient) 上篇UDPC#client
- Udp廣播的傳送和接收(iOS + AsyncUdpSocket)下篇UDPiOS
- UDP介紹及UDP傳送端和接收端廣播程式碼UDP
- Java網路程式設計--UDP傳送接收資料Java程式設計UDP
- Java入門:UDP協議傳送/接收資料實現JavaUDP協議
- Java 基於UDP 實現單播、組播、廣播 Socket 程式設計JavaUDP程式設計
- C/C++ 運用Npcap傳送UDP資料包C++PCAUDP
- SOCKET實現廣播(BoardCast)的傳送和接收 (轉)AST
- 單播、多播(組播)和廣播的區別
- Udp接收和傳送的多執行緒進行(新手)UDP執行緒
- 廣播接收器——接收系統廣播
- 0229-UDP 傳送和接收UDP
- 藍芽Beacon廣播資料包格式以及解析藍芽
- android: 傳送自定義廣播Android
- PHP傳送和接收POST資料PHP
- 正向傳播和反向傳播反向傳播
- 抓包概念大比較:資料包、資料包、分組
- java中UDP接收資料的步驟JavaUDP
- ffmpeg無法接收組播流問題處理
- BLE廣播通道空中包詳解
- Java入門:TCP協議傳送/接收資料實現JavaTCP協議
- iOS下的UDP廣播iOSUDP
- Fastdata:2020年央視《新聞聯播》資料包告AST
- jmeter 傳送 UDP 請求,怎麼接收伺服器返回的 TCP 服務資料JMeterUDP伺服器TCP
- [na]二層+tcp/udp資料包格式TCPUDP
- 兩個app間傳送廣播(動態)APP
- IP組播
- 組播地址
- 組播和廣播的區別
- 怎麼把資料夾變成壓縮包傳送
- android: 接收系統廣播Android
- 傳智播客 java基礎 相關資料 Day1Java
- Laravel SMS 簡訊傳送包Laravel
- 淺談UDP(資料包長度,收包能力,丟包及程式結構選擇)UDP
- 【招聘】NLP文字挖掘研究員-深圳大學傳播學院大資料傳播實驗室大資料
- MPTCP 原始碼分析(四) 傳送和接收資料TCP原始碼