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"),242533 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:") //ip47 .append("32:") //标识符(信息格式标志)48 .append(content); //发送的信息 49 return sb.toString();50 }51 52 53 }