MeiJianMing 2008-11-24 12:06
浏览 241
已采纳

java!!! 在java中如何分别获取本地的两张网卡的IP地址 达人进

一台服务器有两网卡,网卡A为内网用,网卡B为公网IP,
我是这样获取的 java.net.InetAddress.getLocalHost().getHostAddress().toString() 却默认获取为A网的IP
现在我只想获取B的IP地址?应该怎样处理,赐教!!!

  • 写回答

3条回答 默认 最新

  • wxhwz 2008-11-25 13:44
    关注

    [code="java"]java.net.InetAddress.getLocalHost().getHostAddress().toString() [/code]
    这个返回的是本地DNS服务在本地DNS域中的查询结果,如果你的B网地址并没有登记在本地DNS服务中,是不会被返回的。

    如果A网和B网都没有登记,那么就只会返回localhost/127.0.0.1

    [code="java"]InetAddress.getAllByName(String host) [/code]

    这个代码同样是无法解决你的问题的,因为InetAddress是用来处理[color=red]DNS[/color]相关问题的。

    你应该使用NetworkInterface这个类,如果想枚举你机器上的网络接口(实际物理网卡和虚拟网卡都可以),请用

    [code="java"]import java.net.*;
    import java.util.*;

    public class InterfaceLister {
    public static void main(String[] args) throws Exception {
    Enumeration interfaces = NetworkInterface.getNetworkInterfaces();
    while (interfaces.hasMoreElements()) {
    NetworkInterface ni = interfaces.nextElement();
    System.out.println(ni);
    }
    }
    }[/code]

    更详细的信息请见[i]Java Network Programming, 3rd Edition[/i]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误
  • ¥100 反编译微信小游戏求指导
  • ¥15 docker模式webrtc-streamer 无法播放公网rtsp
  • ¥15 学不会递归,理解不了汉诺塔参数变化
  • ¥15 基于图神经网络的COVID-19药物筛选研究
  • ¥30 软件自定义无线电该怎样使用
  • ¥15 R语言mediation包做中介分析,直接效应和间接效应都很小,为什么?
  • ¥15 Jenkins+k8s部署slave节点offline
  • ¥15 如何实现从tello无人机上获取实时传输的视频流,然后将获取的视频通过yolov5进行检测