博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单解决SL多播授权
阅读量:6309 次
发布时间:2019-06-22

本文共 1534 字,大约阅读时间需要 5 分钟。

 

SL特定源多播和任意源多播,加入组前,需要获得当前域的9430端口的授权。

请求授权的消息叫“公告”,响应的消息叫“授权”。分别用0和1表示。

公告和身份验证消息的格式如下所示:  struct SilverlightPolicyMessage {  byte[3] header = "SL\0";  byte version = 1;  byte messageType = {Announcement: 0, Authorization: 1};  byte[4] messageId;  byte[2] port;  byte[2] applicationOriginUriLength;  byte groupAddressLength;  byte[applicationOriginUriLength] applicationOriginUri;  byte[groupAddressLength] groupAddress; }

如果确认应用程序源URI有权加入申请的多播组,那么把消息类型的第5个字节修改为1,表示通过授权,作为响应数据即可:

以下代码测试通过:

static UdpClient client = null;        static void Main(string[] args)        {            client = new UdpClient(9430);//SL客户端客户端请求授权时,会向9430端口 验证授权            client.BeginReceive(ReceiveCallback, null);            Console.Read();        }        static void ReceiveCallback(IAsyncResult result)        {            IPEndPoint remoteEP = null;            byte[] Announcement = client.EndReceive(result, ref remoteEP);//接收到公告            if (result.IsCompleted)            {                Console.WriteLine(remoteEP.Address.ToString() + ":" + remoteEP.Port);                Announcement[4] = 1;//第5个字节0表示公告,1表示授权。其他数据不变,将消息改为授权作为响应                client.BeginSend(Announcement, Announcement.Length,remoteEP, SendCallback, null);                Console.WriteLine("Done");            }        }        static void SendCallback(IAsyncResult Asyncresult)        {            client.EndSend(Asyncresult);            if (Asyncresult.IsCompleted)            {                Console.WriteLine("Sended");            }        }

这样处理后,可以使多播应用程序的调试变得更简单。

 

转载地址:http://fnxxa.baihongyu.com/

你可能感兴趣的文章
2018 前端性能优化清单 - 第 3 部分
查看>>
20181211 - es6(Array && Object && class继承剖析 && generator和iterator原理)
查看>>
webpack + Vue + Hbuilder 打包成App,混合app开发,一个人搞定
查看>>
深入理解Plasma(四)Plasma Cash
查看>>
Glide 系列-3:Glide 缓存的实现原理(4.8.0)
查看>>
搜狐新闻APP是如何使用HUAWEI DevEco IDE快速集成HUAWEI HiAI Engine
查看>>
模拟病毒扫描程序(Executors、ScheduledExecutorService类)
查看>>
阿里巴巴1682亿背后的“企业级”高效持续交付
查看>>
聊聊HystrixConcurrencyStrategy
查看>>
Flutter之WidgetsApp使用详解&与MaterialApp的纠缠
查看>>
谈谈我对Promise的理解(一)
查看>>
Android小知识-剖析OkHttp中的五个拦截器(中篇)
查看>>
粘贴事件发生时,匹配特定链接地址并发送自定义消息
查看>>
TiDB EcoSystem Tools 原理解读(一):TiDB-Binlog 架构演进与实现原理
查看>>
关于html元素类型的详细解析
查看>>
node 执行 bat 命令:乱码、路径问题
查看>>
今日头条最新视频解析方法
查看>>
理解TCP/IP、UDP - 通过nodejs的net模块
查看>>
vue => 自定义指令
查看>>
typeof
查看>>