首页 存档 技术 查看内容

单片机编程实现用网址域名获取服务器IP,超简单,一句话

2018-3-30 13:00 |来自: 互联网 458 0

摘要: 为了适合需要,现在设备IP可能变化,以dev.fuhome.net域名所指向的IP为准。(其他域名以后仅作浏览网页使用,原IP暂时有效,有兴趣的可以根据本文内容做到再也不需要固定服务器IP了,很简单的哦,不信你看) 首先 ...

为了适合需要,现在设备IP可能变化,以dev.fuhome.net域名所指向的IP为准。(其他域名以后仅作浏览网页使用,原IP暂时有效,有兴趣的可以根据本文内容做到再也不需要固定服务器IP了,很简单的哦,不信你看)


首先我们来讲解DNS的知识。


DNS,通俗讲就是将域名比如:www.fuhome.net,转换成服务器的IP地址,单片机也能轻松实现哦,很简单
原理:任何可以发送UDP数据包的设备,采用任何本地端口,向DNS服务器的53端口发送UDP DNS请求包即可收到返回

(题外话:上次有个人到处找我要代码,一分钱也不愿意给,还要的理直气壮,你们说,我能给吗?当然是不可以的,我是坚决不会给的,除非我主动发布内容)


DNS服务器的IP很多比如谷歌8.8.8.8,中国的114.114.114.114,成白上千,我们的手机,电脑,路由器会有一个DNS服务器IP设置向,默认是自动获取,那意味着变化。不过也可以用已知很出名的DNS服务器IP。


本文我做了一个很取巧的方式,把路由器的网关IP作为DNS服务器IP,因为路由器会主动帮我们发到真正的DNS上面,收到信息也会转发给我们:
下面是我请求的www.fuhome.net的例子(换行是为了让相应字节分开好讲解,收到的数据包是连续的)

1、DNS请求
12 34 01 00 00 01 00 00 00 00 00 00
03 77 77 77 06 66 75 68 6f 6d 65 03 6e 65 74 (就是这个意思:3www 6 fuhome 3 net)
00 00 01 00 01



2、DNS接收
12 34 81 80 00 01 00 01 00 00 00 00
03 77 77 77 06 66 75 68 6f 6d 65 03 6e 65 74 (就是这个意思:3www 6 fuhome 3 net)
00 00 01 00 01
c0 0c 00 01 00 01 00 00 01 2c 00 (C0 0C是一个标志,有用信息开始)
04 73 1c 5d c9
(04长度 后面四个就是服务器IP,自己用调试工具发送试试,看看是不是很神奇,有的网站可能还有别的内容,最后一行一般是04 开头的IP)



114.114.114.114作为DNS服务器


路由器网关IP:192.168.1.1作为DNS服务器,注意每个人路由器也许设置不一样,那要具体看你路由器的IP了


fu_dns.c,不同的硬件发送方式不用,原理是一样的

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

/* 本程序仅供学习参考,未经作者允许,不得用于任何商业用途 */

/* 技术论坛:www.fuhome.net/bbs/ */

/* DNS相关 */

/* 本程序用于硬件设备接入fuhome.net

平台进行远程控制(手机APP/微信/WEB */

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


U8 DNS_Data[32]={0x12 ,0x34,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,

0x03,0x77,0x77,0x77,0x06,0x66,0x75,0x68,0x6f,0x6d,0x65,0x03,0x6e,0x65,0x74,0x00,

0x00,0x01,0x00,0x01};

//获取 DNS: dev.fuhome.net


U8 DNS_OK=0;

U16 DNS_Time=0;

U8 DNS_Server[4]={0,0,0,0};


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

/* 功能:1、发送查询包 */

/* 输入:无 */

/* 输出:无 */

/* 备注: */

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


void DNS_Send_Request(void)

{


memcpy(Tx_Buffer,DNS_Data,32);//将数据复制到缓冲区

Write_SOCK_Data_Buffer(0, Tx_Buffer, 32);//端口0发送UDP数据包


}


赞赏信息你们看你们心情:


IOS用户请支付宝:[email protected]

哈哈哈哈哈哈哈

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部