package cn.udp;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
* 模拟:
* 使用udp协议给FeiQ发送信息
* @author 小风微灵
*
*/
public class FQSend {
public static void main(String[] args) throws Exception {
System.out.println("发送端!");
//建立UDP服务插座
DatagramSocket send=new DatagramSocket();
//创建发送包
String content=getFQData("哈哈哈,我是神!收到你哦一声啊!");
String content1=getFQData("ip:192.168.9.255" +
"port:2425" +
"这样就可以群发了,但是不能while循环啊!会出事!");
DatagramPacket packet=new DatagramPacket(content.getBytes(),
content.getBytes().length,
InetAddress.getByName("192.168.1.255"),2425);
//消息 群发:
//InetAddress.getByName("192.168.9.255"),2425
//发送数据包
send.send(packet); //发送不是阻塞型的!
System.out.println("数据已发送.....");
}
private static String getFQData(String content){
StringBuilder sb = new StringBuilder();
sb.append("1.0:") //版本号
.append(System.currentTimeMillis()+":") //时间
.append("天使-彦:") //发送者
.append("192.168.9.251:") //ip
.append("32:") //标识符(信息格式标志)
.append(content); //发送的信息
return sb.toString();
}
}
网络编程(学习整理)---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 }