Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获得客户';谁的IP地址?(弹簧WebFlux WebSocket)_Java_Spring Boot_Spring Webflux - Fatal编程技术网

Java 如何获得客户';谁的IP地址?(弹簧WebFlux WebSocket)

Java 如何获得客户';谁的IP地址?(弹簧WebFlux WebSocket),java,spring-boot,spring-webflux,Java,Spring Boot,Spring Webflux,正如标题所说,可以说,您如何获得连接的详细信息。有没有办法让它通过WebSocketSession?我觉得我错过了什么 我需要一种方法来禁止坏用户的ip地址,而且我想在地图上显示所有在线用户(就像地图上的一个点)。我不需要以后的帮助,我需要获得客户IP地址的帮助 我正在使用Spring的WebFlux WebSocket 编辑:我创建了一个功能请求:WebSocketSession有一个名为getRemoteAddress()的方法,您可以使用它的任何实现来获取远程地址。例如,您可以使用Http

正如标题所说,可以说,您如何获得连接的详细信息。有没有办法让它通过WebSocketSession?我觉得我错过了什么

我需要一种方法来禁止坏用户的ip地址,而且我想在地图上显示所有在线用户(就像地图上的一个点)。我不需要以后的帮助,我需要获得客户IP地址的帮助

我正在使用Spring的WebFlux WebSocket


编辑:我创建了一个功能请求:

WebSocketSession有一个名为getRemoteAddress()的方法,您可以使用它的任何实现来获取远程地址。

例如,您可以使用HttpServletRequest来查找ip地址

 String remoteHost = request.getRemoteHost();
    String remoteAddr = request.getRemoteAddr();
    if (remoteAddr.equals("0:0:0:0:0:0:0:1")) {
        InetAddress localip = java.net.InetAddress.getLocalHost();
        remoteAddr = localip.getHostAddress();
        remoteHost = localip.getHostName();
    }

基于Servlet的
WebSocketSession
对象确实提供了这些信息。这似乎是缺少反应的味道

你应该创建一个。我是通过

public Mono<ServerResponse> hello(ServerRequest request) {
    String remoteAddr = request.remoteAddress().get().getAddress().getHostAddress());

    return null;
}
公共Mono hello(服务器请求){ 字符串remoteAddr=request.remoteAddress().get().getAddress().getHostAddress()); 返回null; }
但是,请注意,您获得的远程地址不一定是实际客户端的地址。这可能是不可能实现的。常规WebSocketSession将此作为一种方法,但被动(WebFlux)WebSocket似乎没有这种方法。导入org.springframework.web.reactive.socket.WebSocketSession;反应式websocket支持没有公开任何与servlet相关的API;您可能将一些东西与基于servlet的websocket支持混为一谈。