技术派端口号冲突解决方案
选中新版正文中的对应文字,然后点“定位到这里”。
技术派的项目再本地开发时,实现了一个小小的黑科技,即当本地的8080端口号被占用时,会重新选择一个端口号进行启动,而不是直接抛端口号被占用、启动失败的异常
不知道是否有人发现这个,若发现了这个小功能,那么你又是否去研究了下是怎么实现的么?
建议还没有看过的小伙伴可以先实际的体验,研究一下;若已经看过了,也可以看下本文,是否和自己get到的知识点相同,或者说文中有哪些写的还不够,亦可以提出来改进一下
端口启动冲突
一般来说,我们会指定每个项目启动的web端口,当不指定时,默认是8080,当本地有多个项目需要启动时,那么端口冲突的问题,就非常突出了
一般出现冲突,表现如下

技术派项目启动时,表现如下
- 无冲突

- 有冲突

解决方案
思路
想要解决端口冲突的问题,思路好像非常明确
- 首先启动前,判断端口号是否被占用
- 若未被占用,则直接使用这个端口启动
- 若被占用,则随机选择一个端口号,重走步骤1
技术方案
基于上面的实现实录,所以我们需要干的就是两件事
- 判断端口号是否可用
- 动态设置应用启动端口号
接下来看一下具体的技术选型
选择可用的端口号
这种不知道怎么实现时,网上查一下,一般来讲只要不是特别偏门的都能得到结果,我们采用的与一般网上介绍的并无区别
我们这里的关键点在于判断一个端口号是否可用,可选方案就是基于这个端口号尝试建立一个socket,当成功建立并可用,那么表示这个端口号没有被别人占用,可以使用它
一个简单的实现如下:
public static boolean checkIpPort(String ip, int port) {
Socket socket = new Socket();
try {
socket.connect(new InetSocketAddress(ip,port),3000);
logger.info("地址和端口号可用");
return true;
} catch (Exception e) {
logger.info("地址和端口号不可用");
return false;
} finally {
if (socket != null)...未能定位到原文的划线
已加入星球,可直接知识星球授权登录
二哥编程星球目前包含:
企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
1. 微信扫右侧的优惠券加入知识星球
2. 解锁星球的实战项目教程和源码: 项目源码+教程获取
真诚点赞 诚不我欺


回复