历史上的今天
返回首页

历史上的今天

今天是:2024年10月15日(星期二)

正在发生

2020年10月15日 | w5100实现dns解析功能

2020-10-15 来源:eefocus

环境:


主机:WIN7


开发环境:MDK4.72


MCU:STM32F103ZE


说明:


在项目中我要搭建一个服务器,服务器域名固定,但ip是动态的.每一个带w5100的板子需要解析dns,获得服务器ip.


dns协议格式:


参考链接:http://blog.csdn.net/wangyifei0822/article/details/2316857


源代码:


dns请求:


/*********************************************************************

* dns请求

*参数:socket:端口

*     url:目标url

*     dns_ip:dns服务器ip

**********************************************************************/

 

void inf_w5100_dns_query(uint8_t socket,char *url,uint8_t *dns_ip)

{

uint8_t data[100] = {0};

uint8_t i = 0;

uint8_t j = 0;

uint8_t str_len = 0;

uint8_t index_num = 0;

//dns标识字段

data[i++] = (DNS_ID >> 8) & 0xff;

    data[i++] = DNS_ID & 0xff;

    //dns头

data[i++] = 0x01;

data[i++] = 0x00;

    data[i++] = 0x00;

    data[i++] = 0x01;

    data[i++] = 0x00;

    data[i++] = 0x00;

    data[i++] = 0x00;

    data[i++] = 0x00;

    data[i++] = 0x00;

    data[i++] = 0x00;

    //正文

j = 0;

str_len = 0;

index_num = i++;

while (1)

{

//判断是否到字符末尾

if (url[j] == '')

{

data[index_num] = str_len;

data[i++] = 0x00;

break;

}

if (url[j] != '.')

{

data[i++] = url[j];

str_len++;

}

else

{

//字符长度

data[index_num] = str_len;

str_len = 0;

index_num = i++;

}

j++;

}

//dns尾

data[i++] = 0x00;

data[i++] = 0x01;

data[i++] = 0x00;

data[i++] = 0x01;

    

    //发送

    inf_w5100_write_data(socket, data, i,dns_ip,53);

}



dns解析:


/*********************************************************************

* dns响应

*参数:data:接收的数据

*     size:数据长度,单位字节

**********************************************************************/

 

void inf_w5100_dns_response(uint8_t *data,uint16_t size)

{

    uint8_t i = 0;

    

    for (i = 0;i < 4;i++)

    {

        Server_Ip[i] = data[size - 4 + i];

    }

}


说明:


因为我不需要解析出的dns的ip列表,而只需要一个ip.所以简便起见,我直接取最后一个ip为服务器ip.


推荐阅读

史海拾趣

Bergquist Company公司的发展小趣事

随着导热材料技术的不断进步,其应用领域也在不断扩展。Bergquist Company紧跟市场需求,将导热产品应用于汽车、家用电器、电脑、散热器、电源供应器及电马达控制等多个领域。这些产品的广泛应用不仅提升了人们的生活品质,还为公司的持续发展注入了强大动力。

BOCA公司的发展小趣事

在快速发展的同时,BOCA公司始终不忘履行社会责任。公司积极参与公益事业,捐赠资金支持教育、环保等项目。此外,BOCA还致力于推动绿色生产,采用环保材料和工艺,减少对环境的影响。这些举措不仅提升了公司的社会形象,也增强了员工的归属感和凝聚力。

这些故事虽然是虚构的,但它们反映了电子行业发展中的一些常见趋势和策略。在实际的电子行业中,许多公司也经历过类似的发展阶段和挑战。当然,每个公司的发展道路都是独特的,BOCA公司如果真实存在,其发展过程也必然有其独特之处。

安谱隆(Ampleon)公司的发展小趣事

在安谱隆的发展历程中,资本市场对其一直保持着高度的关注。然而,其“安家”之路却并不平坦。2017年,奥瑞德曾有意收购安谱隆,但由于资金问题,这桩收购最终未能成行。2018年,旋极信息也计划收购安谱隆,但同样未能成功。这些波折反映了资本市场对安谱隆价值的认可,但也暴露出安谱隆在寻找合适买家方面所面临的挑战。

Advanced Interconnections Corp公司的发展小趣事

随着市场竞争的加剧,AIC公司意识到品质是赢得客户信赖的关键。于是,公司加大了对生产过程的管控力度,从原材料采购到生产流程,再到产品检验,都实行了严格的质量控制。同时,AIC公司还建立了完善的售后服务体系,及时响应客户需求,解决产品使用过程中出现的问题。这些举措使AIC公司的产品赢得了客户的广泛好评,进一步巩固了市场地位。

Chino-Excel公司的发展小趣事

面对日益严峻的环境问题,Chino-Excel公司积极倡导环保理念,将绿色生产贯穿于整个产业链。公司采用环保材料和节能技术,降低产品生产和运营过程中的能耗和排放。同时,公司还积极参与环保公益活动,推动整个行业向更加环保、可持续的方向发展。

CCS[Custom Computer Services]公司的发展小趣事

CCS公司深知人才是企业发展的核心竞争力。因此,公司高度重视人才培养和团队建设。公司建立了完善的人才培养和激励机制,通过定期的培训、学习和实践锻炼,不断提升员工的专业技能和综合素质。同时,CCS公司还注重团队建设,通过团队建设活动和文化建设,增强员工的凝聚力和归属感,为公司的发展提供有力的人才保障。

问答坊 | AI 解惑

车载移动电视接收的系统方案

在柏林推出的DVB T(地面数字广播)数字电视也已经影响到汽车娱乐系统中的电视接收。现在,汽车电视接收机不仅能够接收模拟电视信号(它仍将在城市以外的地区继续存在数年),而且也能够接收和处理DVB T信号。Hirschmann Electronic ...…

查看全部问答>

高人们,来帮我看一下这个

:$ 高人们,来帮我看一下这个吧, 三极管工作在放大壮态。R1, R3,R4,为定值电阻。R2为可变电阻(0~2K), 功能是调R2可变电阻,让那个灯可以变化亮暗。 不会上传图,只好这样了,不好意思:$…

查看全部问答>

VxWorks ping不通

利用flash224下载bootrom到arm9开发板,超级终端能连接并显示运行信息,网口的指示灯也是亮的,ping不通时为什么啊,望各位大哥大姐大虾大神不吝赐教。急!!…

查看全部问答>

HT48R062是不是51系列的单片机?

HT48R062是不是51系列的单片机? 盛群的这个单片机是不是51系列的,还有它的掩膜选项是怎么回事?是不是写好程序后才能决定掩膜发给芯片厂家定做?…

查看全部问答>

6410主频如何跑到800MHZ?

最近看到三星出来的一款手机I8000芯片采用的是6410,主频居然标称800MHZ,汗,为啥我们用的6410都是跑667MHZ,人家手机就可以跑800MHZ,哪位仁兄测试过或知道答案的?…

查看全部问答>

2440的nwait脚是什么作用?

nWAIT [Input] nWAIT requests to prolong a current bus cycle. As long as nWAIT is L, th current bus cycle cannot be completed. ----- nWAIT PIN OPERATION If the WAIT bit(WSn bit in BWSCON) corresponding to each memory bank is en ...…

查看全部问答>

请教 Keil 编码

在Keil编译程序时,汉字会被编译成GB2312码。比如字符数足CArr={“大小多少”};请问有没有人知道怎么设置才能让Keil编译时汉字生成对应的UTF8码而不是GB2312呢???…

查看全部问答>

请问能否在winxp下学习仿真arm?

必须自己购买arm开发板等硬件,才能开发学习arm吗? 能否有种winxp下的软件仿真工具,脱离开发板进行学习呢? 我想软件功能那么丰富,不知道有没这种仿真软件? 如果必须买开发板,不知哪里购买比较安全、便宜? 本文来自:我爱研发网(52RD.com ...…

查看全部问答>

请教一个单片机内存管理的问题!

各位大侠早上好! 我现在正在开发的系统是基于8051单片机的,目前在单片机的内存管理上遇到了问题,请大家指点!情况如下: 我外扩了32K的SRAM,前8K采用静态分配的方式,作为串口等通信接口的数据缓冲区,通过_at_进行了地址定位(定位在前8K空 ...…

查看全部问答>

2011年度吉时利测试测量技术全国巡回研讨会马上开始,赶快报名哦

2011年度吉时利测试测量技术全国巡回研讨会马上开始,赶快报名哦!     免费参加,还有好礼相送,你还犹豫什么,马上去报名!!!     报名就在EEWORLD, 报名链接:https://www.eeworld.com.cn/keithley/meeting/#gift ...…

查看全部问答>