1、廣播群發消息:
這里使用的任然是UDP協議,使用方法還是比較簡單的!
我就記錄一下需要注意的一些地方(筆記):
(1)這里是在局域網內,借用FeiQ聊天軟件,編寫一段程序,實現對局域網內的每一個登錄FeiQ的用戶廣播式的群發消息!
(2)向一款應用程序發送信息,不是簡單的String類型,或者byte[]類型的數據就可以的,一般通信軟件都有內置好的接受數據包的格式,作為過濾非法數據!
也是一種安全性的措施,想想也是應該的!這里FeiQ的接受數據格式為:“版本號:發送時間:發送人:發送者IP:發送數據的類型標識符(默認32:文本字符串:發送的內容)”
(3)我們向指定的在線用戶發送數據包的時候,需要指定的是對方在特定網段內的IP和端口號,但是群發的話,由於接受的對象是所有在線用戶,那么使用的是FeiQ軟件提供的特定的IP和端口號!這些事內設好的,拿來主義,很簡單是不是啊!
2、現在貼上測試的例子:
效果圖:
以下是代碼:
1 package cn.udp; 2 3 import java.net.DatagramPacket; 4 import java.net.DatagramSocket; 5 import java.net.InetAddress; 6 7 /** 8 * 模擬: 9 * 使用udp協議給FeiQ發送信息 10 * @author 小風微靈 11 * 12 */ 13 public class FQSend { 14 15 16 public static void main(String[] args) throws Exception { 17 18 System.out.println("發送端!"); 19 //建立UDP服務插座 20 DatagramSocket send=new DatagramSocket(); 21 22 //創建發送包 23 String content=getFQData("哈哈哈,我是神!收到你哦一聲啊!"); 24 String content1=getFQData("ip:192.168.9.255" + 25 "port:2425" + 26 "這樣就可以群發了,但是不能while循環啊!會出事!"); 27 DatagramPacket packet=new DatagramPacket(content.getBytes(), 28 content.getBytes().length, 29 InetAddress.getByName("192.168.1.255"),2425); 30 31 //消息 群發: 32 //InetAddress.getByName("192.168.9.255"),2425 33 34 //發送數據包 35 send.send(packet); //發送不是阻塞型的! 36 System.out.println("數據已發送....."); 37 38 } 39 40 private static String getFQData(String content){ 41 42 StringBuilder sb = new StringBuilder(); 43 sb.append("1.0:") //版本號 44 .append(System.currentTimeMillis()+":") //時間 45 .append("天使-彥:") //發送者 46 .append("192.168.9.251:") //ip 47 .append("32:") //標識符(信息格式標志) 48 .append(content); //發送的信息 49 return sb.toString(); 50 } 51 52 53 }