我想使用java为本地机器获取默认网关。我知道如何通过执行dos或shell命令来获取它,但是有没有其他的方法来获取? 还需要获取主DNS和辅助DNS。在java中获取默认网关
6
A
回答
0
有没有简单的方法来做到这一点。您必须调用本地系统命令并解析输出,或者读取配置文件或注册表。没有平台独立的方式,我知道做这个工作 - 如果你想运行它们,你必须为linux,mac和windows编码。
见How can I determine the IP of my router/gateway in Java?
覆盖网关,你可以用ifconfig或IPCONFIG以及得到这个。对于DNS信息,您必须在Windows上调用不同的系统命令(如ipconfig),或者在Linux或Mac上解析/etc/resolv.conf。
0
目前在Java中没有标准接口来获取默认网关或DNS服务器地址。您将需要一个shell命令。
0
My way是:
try(DatagramSocket s=new DatagramSocket())
{
s.connect(InetAddress.getByAddress(new byte[]{1,1,1,1}), 0);
return NetworkInterface.getByInetAddress(s.getLocalAddress()).getHardwareAddress();
}
由于使用数据报(UDP)的,它不会在任何位置连接,所以端口号可以是无意义的和远程地址(1.1.1.1)不需要是可到达的,只是路由。
1
在Windows与ipconfig
帮助:
在这里我得到我的路由器的默认网关的IP地址,打开它在浏览器中看到我的路由器的设置页面。
相关问题
- 1. 如何从powershell获取默认网关?
- 2. 从默认网关获取mac地址?
- 3. 如何在Mac OSX中获取默认网关
- 4. 是否可以在java中获取默认网关IP和MAC地址?
- 5. 获取Java中的默认根目录
- 6. PacketTrace默认网关
- 7. 识别活动网卡并获取默认网关
- 8. 获取Orchard默认页面的网址
- 9. Python:获取默认网关的MAC地址
- 10. 如何使用Python获取默认网关IP?
- 11. 从批处理文件获取默认网关
- 12. 获取和设置支持Windows XP的C默认网关
- 13. Java获取默认的UI颜色
- 14. Java。获取系统默认打印机
- 15. 如何获取WEC2013中适配器的网络掩码和默认网关
- 16. 捕获系统默认编辑器关闭事件在Java中
- 17. Python:在Linux中获取本地接口/ IP地址的默认网关
- 18. 在android中获取默认时区
- 19. 在Crystal中获取默认值说明
- 20. 在复选框中获取默认值
- 21. 在Slick中获取列的默认值?
- 22. Java查找默认网关的网络接口
- 23. Linux中C上的默认网关
- 24. 无法ping默认网关linux在vmware
- 25. 使用VB.Net获取IP地址,子网,默认网关,DNS1和DNS2
- 26. 如何在Linux + WINDOWS +获取系统的默认网关地址MAC
- 27. 获取UINavigationBar的默认titleTextAttributes
- 28. JPA默认获取类型
- 29. 获取默认程序
- 30. 获取magento管理网格中默认预选的所有行
这不会总是返回默认网关,即完全组成。分组路由是通过多种因素确定的,其中之一是目的地址。如果您的默认网关无法接受/路由您的目的地址,则您的数据包将通过另一条路线传送,该路线可能是也可能不是所有可用路线中最差的;取决于您的网络适配器指标,它也可能是第二个最佳路线或其中之一。请不要使用假设编写软件,这会使整个业务情况变得更糟。 – specializt 2015-06-29 16:34:27
这很巧妙。但它取决于目的地址,最好使用[在互联网上的真实地址](http://serverfault.com/q/132805/92104)来确保您至少获得*一个有效的路由,即使这不是默认路线。 – 2017-03-22 13:22:17
如果你有工作的DNS,你可以在这里使用主机名而不是地址; 'a.root-servers.net'保证始终存在,并且不太可能存在于您的本地网络中。 – 2017-03-22 13:43:07