网络编程(学习整理)---3--(Udp)FeiQ实现广播消息群发
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 }
研究技术需要静下心来,一点一点地深究.......