【问题标题】:jetty 8 - websockets : how do I get the client IP address?jetty 8 - websockets:如何获取客户端 IP 地址?
【发布时间】:2018-08-25 10:21:39
【问题描述】:

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

【问题讨论】:

    标签: java jetty websocket


    【解决方案1】:

    我觉得还是和以前一样,像这样从HTTPServletRequest#getRemoteAddr()获取IP:

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

    【讨论】:

      【解决方案2】:

      如果您使用org.eclipse.jetty.websocket.api.Session,我会选择:

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

      【讨论】:

        【解决方案3】:

        没有 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);
            }
        

        【讨论】:

        • 这不适用于 IPv6 地址。更好的是 InetSocketAddress ip = (InetSocketAddress)session.getUserProperties().get("javax.websocket.endpoint.remoteAddress");返回 ip.getAddress().getHostAddress();
        【解决方案4】:

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

        这只是一个例子:

        @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
        

        【讨论】:

          猜你喜欢
          • 2015-10-18
          • 2012-03-14
          • 2012-02-16
          • 2019-01-14
          • 2015-12-20
          • 2016-03-29
          • 2015-09-01
          • 2013-07-07
          • 2011-05-26
          相关资源
          最近更新 更多