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

回到顶部