Java - Netty 服务端获取客户端的IP和端口,IP没有变化,但是端口每次访问都会改变怎么回事?
服务端代码如下:
/** * 当有客户端与服务器连接时执行此方法
* 1.打印提示信息
* 2.将客户端ip和连接通道存储到remoteAddressChannleMap
*/
@Override
public void handlerAdded(ChannelHandlerContext ctx) throws Exception {
Channel channel = ctx.channel();
// 客户端建立连接的时候,保存其ip和通道 channel.remoteAddress().toString():/127.0.0.1:12173
InetSocketAddress remoteAddress = (InetSocketAddress) channel.remoteAddress();
System.err.println("有新的客户端与服务器发生连接。客户端地址:" + channel.remoteAddress());
remoteAddressChannelMap.put(remoteAddress.toString().substring(1), channel);
System.out.println("remoteAddressChannleMap 的 size:" + remoteAddressChannelMap.size());
// channelGroup.add(channel);
}
我们想在客户端连接服务端时保存这个channel,发现客户端的IP地址没有变化,但是端口却一直在变化,本来以为是程序占用的端口,但是cmd查询发现没有任何进程占用。请问是这到底怎么回事?
回答:
客户端IP当然不会变了。端口会变是因为系统连接服务端,建立连接的时候会动态选择一个可用的端口。
如果连接还没有断开,用netstat应该是能看到有进程占用的。
以上是 Java - Netty 服务端获取客户端的IP和端口,IP没有变化,但是端口每次访问都会改变怎么回事? 的全部内容, 来源链接: utcz.com/p/945328.html