无法获取远程计算机的IP地址

时间:2013-05-02 05:23:27

标签: java javascript jsp servlets

我要求只允许一个用户使用一个登录ID和密码登录,这意味着不允许两个用户使用相同的用户名和id登录。所以我想在我的Db中创建一个字段存储ipaddress.Suppose A已经登录然后他的IP地址将存储在Db中,现在如果B想要登录,那么他将获得该用户已经登录的警报,并且IP地址是A的ipaddress。为此目的我正在使用

    <%@ page import="java.net.*" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%

out.println("remote address  "+request.getRemoteAddr());
 out.println("remote host  "+request.getRemoteHost());
 out.println("remote port "+request.getRemotePort());
 out.println("remote user  "+request.getRemoteUser());
//out.println(InetAddress.getLocalHost().getHostAddress());
out.println(request.getRemoteAddr());
//out.println(InetAddress.getLocalHost().getHostAddress().toString());
%>
</body>
</html>

但我没有得到确切的ipaddress.please告诉我如何获得ipaddress.if你认为这种方式在Db中存储ipadddress并警告重复用户是不明智的,那么你的建议也欢迎

remote address 0:0:0:0:0:0:0:1 remote host 0:0:0:0:0:0:0:1 remote port 38059 remote user null 0:0:0:0:0:0:0:1

1 个答案:

答案 0 :(得分:0)

出于某种原因,request.getRemoteAddr()不适合您。如果不了解你所在公司的网络,就不可能说出原因。

但是,您甚至不需要IP地址。如果用户当前已登录,请保留标记:

User | logged in?
-----+------------
 A   |    Yes
 B   |    No
 C   |    No

现在,如果用户尝试登录,请检查他/她是否已登录。如果是,则显示错误消息并避免登录。

您需要重置此标志

  • 当用户注销时(单击“注销”按钮)
  • 会话超时后(您可以使用HttpSessionListener),以防用户未单击“注销”。 注意:如果您的会话超时时间很长(例如30分钟),并且用户忘记点击“退出”,则他/她将无法在剩余的会话中登录。
  • 重新部署应用程序后,如果所有会话都被销毁,那么。