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查询发现没有任何进程占用。请问是这到底怎么回事?

阅读 3.5k
1 个回答

客户端IP当然不会变了。端口会变是因为系统连接服务端,建立连接的时候会动态选择一个可用的端口。

如果连接还没有断开,用netstat应该是能看到有进程占用的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题