日期:2014-05-19  浏览次数:20649 次

怎样识别java程序是第一次登陆
我写了一个程序,在加载登陆界面后,登陆的时候需要判断出是否是第一次,如果是则获得本机的ip和主机名,然后存为作为不可变的常量,然后别人把这个程序拷到其他主机上时,就会判断这不是第一次登陆,然后匹配主机名,如果不同,则需要输入备用密码,我的疑惑就是怎样识别这是不是第一次登陆呢,下面是部分代码,谢谢各位大神了先
InetAddress hostAddress;
 public static String iHostName;
 public static Boolean isFirst = true;
 String iIp;
 
 
 public UserLogin  () throws UnknownHostException{
try
{
System.out.println(isFirst);
if(isFirst){
hostAddress=InetAddress.getLocalHost();
//ip会变,但是主机名称不变,根据主机名称来判断是否需要输入备用密码
iIp=hostAddress.getHostAddress();
iHostName=hostAddress.getHostName();
isFirst=false;
}
}catch (UnknownHostException err)
{
System.out.println("获取IP地址出现错误:"+err);
}
//下面是匹配当前主机名是否是第一次登录时的主机名
if(((InetAddress.getLocalHost()).getHostName()).equals(iHostName))

我判断的isFirst变量每次还是true,或者说怎样让isFirst改变后就不再变,谢谢大家了
------解决方案--------------------
 用户登录以后讲信息写入一个文件里面去吧,通过读取文件进行判断!
------解决方案--------------------
感觉楼主做这个判断价值不大,主机名改变很容易啊,重装系统或者直接手动改掉。。。
可靠性的话,不如判断“机器码”,硬盘或CPU序列号等,这才是一般不会改变的(改变了,就相当于换电脑了)
如果是第一次登录,把客户端的“机器码”存在文件中或数据库中去。。。
判断是不是第一次登录就简单了,读数据库或文件中的值,如果不为空,那说明不是第一次登录,为空,是第一次,此时把相关值存入即可。
另外,为安全起见,存在数据库中更好点吧
------解决方案--------------------
引用:
引用:
要获取服务器IP,不需要这么麻烦,
String ip = InetAddress.getLocalHost().getHostAddress(); 
这个就是获取当前主机的ip地址,软件部署在哪台机器返回的就是对应的ip地址,LZ可以试下。
我不是想获得IP,我是想根据主机名来判断是否是常用登录电脑,因为一般主机名都是不变的,所以还是存在我说的判……

那如果是这样的话还得先判断哪个是常用登陆电脑,比如我登陆QQ,每天上班在公司登陆一次,下班回家登陆一次,那你说哪个是常用登陆电脑,还是两个都是,怎么来定这个标准,采用什么算法、策略?