黑马程序员技术交流社区

标题: 【已解决】java获取IP 及mac [打印本页]

作者: 武剑峰    时间: 2012-6-3 12:12
标题: 【已解决】java获取IP 及mac
本帖最后由 武剑峰 于 2012-6-5 08:07 编辑

最近结合视频写个小软件,其中遇到几个问题:1java 如何获取服务器mac地址 2获取客户端IP
来自:黑马程序员训练营论坛 Android客户端
作者: 黑马-唐磊    时间: 2012-6-3 12:46
本帖最后由 黑马-唐磊 于 2012-6-3 12:49 编辑

1.获取客户端ip地址( 这个必须从客户端传到后台):
   jsp页面下,很简单,request.getRemoteAddr() ;
   因为系统的VIew层是用JSF来实现的,因此页面上没法直接获得类似request,在bean里做了个强制转换
Java代码  
public String getMyIP() {  
     try {  
         FacesContext fc = FacesContext.getCurrentInstance();  
         HttpServletRequest request = (HttpServletRequest)fc.getExternalContext().getRequest();  
         return request.getRemoteAddr();  
     }  
     catch (Exception e) {  
         e.printStackTrace();  
     }  
     return "";  
}  


2.获取客户端mac地址
    调用window的命令,在后台Bean里实现 通过ip来获取mac地址。方法如下:
Java代码  
public String getMACAddress(String ip){  
        String str = "";  
        String macAddress = "";  
        try {  
            Process p = Runtime.getRuntime().exec("nbtstat -A " + ip);  
            InputStreamReader ir = new InputStreamReader(p.getInputStream());  
            LineNumberReader input = new LineNumberReader(ir);  
            for (int i = 1; i < 100; i++) {  
                str = input.readLine();  
                if (str != null) {  
                    if (str.indexOf("MAC Address") > 1) {  
                        macAddress = str.substring(str.indexOf("MAC Address") + 14, str.length());  
                        break;  
                    }  
                }  
            }  
        } catch (IOException e) {  
            e.printStackTrace(System.out);  
        }  
        return macAddress;  
    }
作者: 何拴绪    时间: 2012-6-3 12:47
思路是在服务端获取客户端的Socket流,然后通过流里的方法获取IP地址
获取客户端地址:
ServerSocket ss = new ServerSocket(10005);//10005为监听的客户端的端口号
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println("IP:"+ip);
mac地址不知道怎么获取,期待楼下回答ing。。。。。
作者: 武剑峰    时间: 2012-6-4 09:07
最近忙没有上网,现在从手机上看到大家的回复,今天晚上试过后答复大家。实在抱歉
来自:黑马程序员训练营论坛 Android客户端
作者: 武剑峰    时间: 2012-6-5 08:05
经本人测试沙发的MAC获取可以执行,但IP不能是“127.0.0.1”,藤椅的IP获取正确,但必须有连接才可,正好解决了本人的问题,谢谢了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2