天线|RF射频
直播中

吴思锋

8年用户 175经验值
私信 关注
[问答]

如何利用lwip在局域网内通过hostname获取IP?

先跟大家说一下我的硬件平台:STM32F107,无操作系统,已经移植好了lwip,TCP通信等测试下来也都是可以的。现在我想通过hostname查找相应设备的IP。我查了下,可用的API函数应该有dns_gethostbyname以及lwip_gethostbyname。lwip_gethostbyname貌似需要操作系统才能支持,而dns_gethostbyname我测试下来得到的IP地址是错误的(dns初始化之类的工作也做了)。不知道坛子里的各位有没有啥思路。

回帖(3)

黄明谊

2019-8-21 08:32:33
帮顶
举报

康沧鹤

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

王芳

2019-8-21 09:02:07
你好请问你的广播部分怎么实现的呢?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分