核心代码:
public class ServerHandler extends SimpleChannelInboundHandler<HttpObject> { @Override public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) throws Exception { if (msg instanceof HttpRequest) { HttpRequest mReq = (HttpRequest) msg; String clientIP = mReq.headers().get("X-Forwarded-For"); if (clientIP == null) { InetSocketAddress insocket = (InetSocketAddress) ctx.channel() .remoteAddress(); clientIP = insocket.getAddress().getHostAddress(); } } } }
refurl:http://www.bubuko.com/infodetail-373799.html
http://stackoverflow.com/questions/6520624/jboss-netty-getting-user-ip-http-request
http://my.oschina.net/penngo/blog/215807?fromerr=nHCixuYR
相关推荐
4. **设备通信协议**:智能取电开关与服务器之间的通信基于TCP/IP协议,利用Netty这一高性能、事件驱动的应用程序框架,确保数据传输的稳定性和安全性。通信协议中包含帧头、预留位、报文类型、报文长度、设备ID和帧...
MultiPhone用户的IP地址通常与PC机的IP地址一致,具体是公网还是私网地址取决于运营商的IP地址规划。对于电话号码的分配,如果用户只需作为主叫,可以不配置电话号码;如果既需要作为主叫又需要作为被叫,则需要一...
例如,TCP/IP协议中常用的换行符('\n')或换行回车符组合('\r\n')。分隔符解码器的作用就是根据设定的分隔符,将接收到的数据流分割成一个个独立的帧,方便后续处理。 2. 定长解码器(FixedLengthFrameDecoder)...
- Jedis是较早且广泛使用的库,而Lettuce则提供了更现代的Netty支持和异步API。 3. **Jedis的使用**: - 添加Jedis依赖到你的项目(例如,在Maven中添加对应的依赖项)。 - 创建Jedis实例,指定Redis服务器的IP...
Lettuce是另一个Java客户端,相比于Jedis,它提供了更全面的异步和反应式编程支持,基于Netty框架,适合于微服务和高并发环境。Lettuce的特点包括: 1. 异步和反应式API:Lettuce通过Reactor或CompletableFuture...