完善资料让更多小伙伴认识你,还能领取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 个讨论
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
635 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
585 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1036 浏览 1 评论
707 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
508 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
147浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
113浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
118浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
114浏览 12评论
TPA6304-Q1: TPA6304 两片公用一组I2C的话,其中一片配置不成功怎么办
156浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-16 16:26 , Processed in 0.727411 second(s), Total 49, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号