zoukankan      html  css  js  c++  java
  • 网络编程(学习整理)---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 }
  • 相关阅读:
    深入理解幂等性(转)
    Mysql数据库表结构设计准则
    nodejs以对象做对象的key导致value一直被覆盖
    数组常用方法
    css选择器总结
    CSS 选择器权重计算规则
    ElementUI select
    linux-sed命令
    vue 组件数据传递:
    vue视频: 自定义指令 && 拖拽 && 自定义键盘信息
  • 原文地址:https://www.cnblogs.com/newwind/p/5661582.html
Copyright © 2011-2022 走看看