完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 3guoyangyang7 于 2016-10-11 22:07 编辑 Duang、Duang、Duang。CC3200的帖子在很久很久以前写了4篇,然后由于中间有事,就忙别的去了,让关注小狂的小伙伴等了那么久,实在是不好意思,当时有很多小伙伴都在问,CC3200系列的会不会太监啊,哈哈,看过网络连载小说的都知道这个词,就是会不会就此断了呢,小狂想在这郑重的声明一下,小狂说的事说到做到,所以放心,帖子会按照计划一点点搞定,也希望大家多多捧场,多多支持。 当然前面几篇帖子给我的反馈也是挺不错的,应该能帮助一些人吧,小狂的目的也就达到了,嘿嘿。期间也有很多人给过我反馈,加我QQ问过我剩下的内容,小狂也都一一回答了,当然接下来小狂还是欢迎各位小伙伴打扰的。最近闲了今天,可能时间也不会太多,但是会尽力往下写,看到的朋友给个支持,留个言,当做是一种回报吧,嘿嘿。闲话少说,直接进入今天的内容 一、MDNS的一些基本概念 mDNS英文名domain name system 翻译成中文,多路广播。小狂毕竟也不是专业搞网络的,所以具体的东西我不讲,有兴趣的可以参考一下关于DNS的白皮书,反正小狂看了就三个字,懵,懵,懵,咱们今天就从应用的角度出发,来说明,这是一个神马鬼,该怎么用,就ok,工程偏重于应用,不讨论过深。 1、概念 我们首先解释一下什么是多路广播,既然是广播,我们平常所说广播就是通过一个大喇叭让公众知道一些事情,这里我们就借用这一概念,来说明,mdns就是在局域网内我过DNS域名系统广播我自己的服务,ip地址,端口号,和一些文本信息,给需要设备。说白了,就是在网络中喊,我是谁,我能干啥,我开放了哪个门让其他人进入。哈哈,不知道这么说能明白不,哈哈。 2、应用背景 Mdns一般应用在什么场所呢,很简单,当一个设备接入网络后,你想让另外一个设备他们两个能建立起通讯关系,现在他们就像两个陌生人,并不知道谁是谁,我要联系谁,举个不恰当的例子,就像两个挚友认识的过程,但是谁都不认识谁,首先偶遇的地方,这个在mnds中的要求就是要在同一个局域网内,也就是常说的内网,另外一个要有共同的话题点,这个就是服务内容,其次会有自己的名字,这个就是每个设备的IP地址,然后熟悉了之后互相邮寄礼物,就要有门牌号,那就是开放的端口号。其次就是随便聊聊就是广播的文本。不知道这样讲的是不是很明白。再举个例子,比如你设计了一个智能设备,你已经让其连上了家里的路由器,你想通过手机控制他怎么办,智能设备的IP是自动分批的,这个时候你就可以利用mdns来解决这个问题,哈。 3、应用的方式 其实,具体的应用方式跟上文讲的朋友交往的过程还不太一样,那是一个逐渐的过程,mdns就直接多了,mdns会分为发送端,和接收端,发送端会直接在网络中大声喊,我是谁,我开放了多少门牌号,我能提供什么服务,然后接收端就根据发送端提供的服务,看适不适合自己(怎么有些想歪了呢),如果适合自己,那就一起愉快的玩耍,这样就可以拿到设备的ip,端口号,这个时候建立TCP连接,想怎么high就怎么high。 基本的介绍完了,我们就要进行代码实战了。 二、代码分析 同样的道理,单独的代码,小狂也没有具体的时间来写,依旧是改吧改吧,讲明白,我个人认为已经可以啦,哈哈。 1、mDNS发送端,也叫mDNS主机,(都一个意思就不要纠结啦) 在调用mDNS之前,首先要确定的一件事,肯定是你的CC3200已经接入网络了,没有地方,广播个屁啊,。其实这个的程序很简单,就调用了两个函数 ![]() 我们慢慢解释,打开API手册,我们看看这些是神马玩意,sl_NetAppMDNSUnRegisterService这个函数是移除网络中的mDNS广播,其pServiceName为服务的名字,ServiceNameLen 为服务名字的长度。这里pServiceName的名字要符合mdns域名的定义,是有具体含义的,不能瞎写,瞎写肯定不好用,例程中给的是CC3200._uart._tcp.local。sl_NetAppMDNSRegisterService这个函数是在网络中注册mDNS 广播,看一下下边的函数原型 ![]() 其中 pServiceName 服务名 ServiceNameLen 服务名的长度 pText, 广播的文本,就是你俩要说的话,但是这个东西与手机通讯一直没有成功,不知道为啥,与另外一块板子通讯就能搞定,哎,凄惨的孩子,现在都没找到原因,问了一圈都不知道,只能归功于ti芯片的BUG TextLen 文本的长度 Port 主机的端口号 TTL 小狂也没搞懂是神马,应该是发送广播的间隔时间,这是我猜的 Options 这个是for future,从目前来看,给1吧,也看出3200的不完善。 注册完成后,下载进去就能发送广播啦,哈哈,是不是很简单,下面我们来看一下接收广播的程序 2、mDNS接收端 ![]() 同样的程序,把途中红框内的定义删掉就行 ![]() 主要的函数是这个函数 ![]() pService 服务名称要和发送的服务名一致,不一致动脑子想象也GG啊 ServiceLen 服务名称的长度 Family 所采用的协议是IPV4还是IPV6 PAddr 广播到的IP地址,就是发送端的IP地址 pPort 广播到的端口号,就是发送端的端口号 pTextLen 接收文本的长度 pText 接收的文本 现在就可以把这些东西和我们上边讲的东西对应起来,编译,下载程序,我们来看现象 三、测试 1、发送端测试 由于小狂半天没有找到手机上的mdns接收端的测试软件又不会用安卓自己写,只能采用比较笨的方法,就是TI例程的测试方法,一个发送一个接收,然后看现象,我直接就截TI的图了,重点不在这,在接收端测试。 ![]() 2、接收端测试 我们现在需要把接收端的接收数据长度改一下,反正只要大于1就肯定收不着,猜测是编码问题导致的, ![]() 改一下,重新编译,然后,推荐一个手机端的服务器测软件,中文名叫终极服务器专业版。 打开后的长这样 ![]() 然后点红框中的内容,建一个mdns的服务器,配置如下图所示 ![]() 第一个红框是名字,随便起,就是一个标志 第二个是要往哪个网络发送广播 ![]() 这些东西不能随便起了,决定了服务的名称,所以,这个要根据你发送的一致。 完成后,点击开始运行,我们就会发现我们得接收端收到了如下的内容 ![]() 图中有发送端广播的端口号,有发送端广播的地址,就是手机的IP地址,这个你可以看一下手机的连接情况,发现是一致的。 三、总结 到此,mdns讲完了,洋洋洒洒也谢了2300多字了,但是感觉说的还是不是那么详细,但是对于刚入门的小白来说已经足够理解里边浅显的道理了,写了将近3个小时,一晚上的时间都投入到里边了,希望各位看官,支持一下小狂,撒花,留言,打赏,加分,来了就留下你的脚步吧,谢谢。下一讲TIOS。敬请期待。 其他跟着小狂玩CC3200系列请移步如下连接 |
|
相关推荐
5 个讨论
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
832 浏览 1 评论
1071 浏览 0 评论
620 浏览 1 评论
469 浏览 1 评论
663 浏览 2 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
266浏览 29评论
1228浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
360浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
337浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
204浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-7 07:04 , Processed in 0.785881 second(s), Total 46, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191