jetty 8 - websockets:如何获取客户端IP地址?

时间:2012-01-31 22:56:26

标签: java jetty websocket

简单的任务。我正在使用jetty的websockets服务器实现,我必须获取客户端IP地址,但我不知道如何。

4 个答案:

答案 0 :(得分:5)

我认为它与以往一样,从HTTPServletRequest#getRemoteAddr()抓取IP:

public class WSServlet extends WebSocketServlet {

    ...
    ...

    @Override
    public WebSocket doWebSocketConnect(HttpServletRequest req, String str) {
        System.out.println("IP: "+ req.getRemoteAddr());
        ...
    }
}

答案 1 :(得分:1)

如果您使用的是org.eclipse.jetty.websocket.api.Session,我会寻求:

session.getRemoteAddress().getAddress().getHostAddress();

答案 2 :(得分:0)

如果您需要进行身份验证,可以这样做:

这只是一个例子:

@Override
public boolean canPublish(BayeuxServer server, ServerSession client,
                          ServerChannel channel, ServerMessage messsage) {
  //
  BayeuxContext context=server.getContext();
  System.out.println(context.getRemoteAddress());
  return true;
}

请注意,getRemoteAddress会返回InetSocketAddress字符串。所以你也有端口,看起来像这样:

/79.111.111.22:49372

答案 3 :(得分:0)

没有WebServletSocket:

public static String getClientIp(Session session) {
        String ip = session.getUserProperties().get("javax.websocket.endpoint.remoteAddress").toString();
        int i1 = ip.indexOf("/");
        int i2 = ip.indexOf(":");
        return ip.substring(i1 + 1, i2);
    }