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 }
研究技术需要静下心来,一点一点地深究.......
分类: 网络编程
0
0
«上一篇:网络编程(学习整理)---2--(Udp)实现简单的控制台聊天室
»下一篇:数据库(学习整理)----1--如何彻底清除系统中Oracle的痕迹(重装Oracle时)
posted @ 2016-07-11 20:52 小风微灵-彦 阅读(386) 评论(0)编辑 收藏
注册用户登录后才能发表评论,请 登录 或 注册,访问网站首页。
【推荐】50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
【免费】从零开始学编程,开发者专属实验平台免费实践!
最新IT新闻:
· NASA在使用大数据做什么?相关事务全解析
· IBM改组计算机网络部门 加速向人工智能转型
· Google收购专注解决“老问题”的印度人工智能公司Halli Labs
· 亚马逊智能音箱和苹果贴身近打:二代Echo走高端路线
· 李开复:向死而生的经历让我明白人类如何与人工智能共存
» 更多新闻...
最新知识库文章:
· 小printf的故事:什么是真正的程序员?
· 程序员的工作、学习与绩效
· 软件开发为什么很难
· 唱吧DevOps的落地,微服务CI/CD的范本技术解读
· 程序员,如何从平庸走向理想?