ServletRequest.getRemoteAddr()返回的IP格式是什么

Jér*_*nge 3 java format servlets ip-address

ServletRequest.getRemoteAddr()的Javadoc 没有提到任何有关返回的IP地址格式的信息.实现过滤器时这很烦人.我们可以依靠什么?有没有可以依赖的官方规范?谢谢.

Bal*_*usC 9

让我们从ServletRequest#getRemoteAddr()javadoc开始:

的getRemoteAddr

    java.lang.String getRemoteAddr()
Run Code Online (Sandbox Code Playgroud)

返回发送请求的客户端或最后一个代理的Internet协议(IP)地址.对于HTTP servlet,与CGI变量的值相同REMOTE_ADDR.

(强调我的)

好的,让我们阅读CGI REMOTE_ADDR规范:

4.1.8.REMOTE_ADDR

REMOTE_ADDR变量必须被设置成客户端发送请求到服务器的网络地址.

   REMOTE_ADDR  = hostnumber
   hostnumber   = ipv4-address | ipv6-address
   ipv4-address = 1*3digit "." 1*3digit "." 1*3digit "." 1*3digit
   ipv6-address = hexpart [ ":" ipv4-address ]
   hexpart      = hexseq | ( [ hexseq ] "::" [ hexseq ] )
   hexseq       = 1*4hex *( ":" 1*4hex )
Run Code Online (Sandbox Code Playgroud)

RFC 3513 [15]中描述了IPv6地址的格式.

在那里,你有各种可能的格式.