黑马程序员技术交流社区
标题:
【已解决】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