首页 > Java > java教程 > 正文

Netty服务器:客户端IP不变,端口却变化的原因是什么?

DDD
发布: 2025-03-16 11:06:11
原创
559人浏览过

netty服务器:客户端ip不变,端口却变化的原因是什么?

Java Netty服务器:客户端IP地址不变,端口号却变化的原因分析

在使用Netty构建Java服务器时,获取客户端IP地址和端口号至关重要。然而,开发者经常遇到一个问题:客户端IP地址保持不变,但端口号每次连接都不同。本文将对此进行深入分析。

问题描述:

Netty服务器端获取客户端IP和端口号,并将其存储在Map中。开发者发现,客户端IP地址一致,但端口号每次连接都变化,这令人困惑,因为命令行工具未显示任何进程占用这些端口。

以下代码片段展示了Netty服务器端如何获取客户端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:" + remoteAddressChannleMap.size());
    // channelGroup.add(channel);
}
登录后复制

原因解释:

客户端IP地址不变是正常的,因为它由网络配置决定,除非网络配置改变。

端口号变化的原因是:客户端与服务器建立连接时,会动态选择一个可用端口。操作系统负责管理这些端口,为每个新连接分配一个未被占用的端口。这并非程序占用端口,而是操作系统在客户端层面分配的临时端口,用于本次连接。因此,命令行工具未显示进程占用这些端口是正常的。 如果连接仍然存在,使用netstat命令应该能看到这些临时端口被操作系统占用。连接断开后,这些端口会被释放。

因此,客户端IP地址不变,端口号每次连接都变化是操作系统正常行为,并非程序错误。

以上就是Netty服务器:客户端IP不变,端口却变化的原因是什么?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号