A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 武剑峰 中级黑马   /  2012-6-3 12:12  /  2113 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 武剑峰 于 2012-6-5 08:07 编辑

最近结合视频写个小软件,其中遇到几个问题:1java 如何获取服务器mac地址 2获取客户端IP
来自:黑马程序员训练营论坛 Android客户端来自: Android客户端

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

4 个回复

正序浏览
经本人测试沙发的MAC获取可以执行,但IP不能是“127.0.0.1”,藤椅的IP获取正确,但必须有连接才可,正好解决了本人的问题,谢谢了
回复 使用道具 举报
武剑峰 来自手机 中级黑马 2012-6-4 09:07:46
板凳
最近忙没有上网,现在从手机上看到大家的回复,今天晚上试过后答复大家。实在抱歉
来自:黑马程序员训练营论坛 Android客户端来自: Android客户端
回复 使用道具 举报
思路是在服务端获取客户端的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-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;  
    }

评分

参与人数 1技术分 +1 收起 理由
赵志勇 + 1 淡定

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马