OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4216|回复: 3

关于基于lwip在局域网内通过hostname获取IP的问题

[复制链接]

1

主题

9

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2013-12-8
在线时间
3 小时
发表于 2017-7-10 15:54:49 | 显示全部楼层 |阅读模式
10金钱
先跟大家说一下我的硬件平台:STM32F107,无操作系统,已经移植好了lwip,TCP通信等测试下来也都是可以的。现在我想通过hostname查找相应设备的IP。我查了下,可用的API函数应该有dns_gethostbyname以及lwip_gethostbyname。lwip_gethostbyname貌似需要操作系统才能支持,而dns_gethostbyname我测试下来得到的IP地址是错误的(dns初始化之类的工作也做了)。不知道坛子里的各位有没有啥思路。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165452
金钱
165452
注册时间
2010-12-1
在线时间
2113 小时
发表于 2017-7-11 00:38:09 | 显示全部楼层
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2013-12-8
在线时间
3 小时
 楼主| 发表于 2017-7-15 08:52:10 | 显示全部楼层
Hi,各位。关于这个问题我后来和同事讨论了一下,然后在网上搜索了一番,发现局域网内解析主机名的IP地址并非是经过DNS服务,而是通过NetBIOS协议。在lwip各个版本的contrib压缩包中都有一个相应的netbios.c文件,使用方法也比较简单,只要根据需要修改NETBIOS_LWIP_NAME宏定义(注意英文要大写),然后调用netbios_init初始化函数就可以了。但是比较遗憾的是lwip只提供了被解析的功能,没有实现主动解析。后来在查找相关资料的时候看到,局域网内寻找主机有一种更常规的方法,就是主机定时向局域网内发送广播消息,从机接入局域网后会收到此广播消息,然后根据此消息的IP地址与主机建立TCP链接。
回复

使用道具 举报

9

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2016-4-22
在线时间
37 小时
发表于 2017-8-8 14:30:02 | 显示全部楼层
你好请问你的广播部分怎么实现的呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-18 17:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表