← 术语图鉴

端口

Port · 也叫 端口号 / :8787 / :5199

一台电脑上区分不同服务的编号:地址把请求送到这台电脑,端口号决定交给哪个程序。

你可能会说:

  • “localhost 后面那个冒号加数字是什么?”
  • “启动时报错 address already in use,是什么被占了?”

它是什么

一台电脑可以同时跑很多个服务。地址(比如 localhost)只能把请求送到这台电脑,端口号(比如 5199、8787)决定交给哪个程序。网址里没写端口时,http 默认用 80,https 默认用 443。

一个端口同一时间只能被一个程序占用,第二个程序再来就会报 address already in use。更隐蔽的情况是:旧程序一直没退出,占着那个端口;你以为在和新程序说话,回答你的其实是它。

遇到"改了没生效",先确认那个端口上到底是谁:macOS 和 Linux 上运行 lsof -iTCP:端口号 -sTCP:LISTEN,就能查到占着它的进程。

打个比方

像写字楼的房间号:地址把你带到楼下,房间号决定你敲的是哪家公司的门。一个房间同一时间只能租给一家。

在这个网站里

兄弟项目 E2E Review 在本地跑两个服务:前端开发服务器在 5199 端口,它把所有 /api 请求转给 8787 端口。第 2 课的事故里,8787 被一个两个月前启动的旧进程占着,前端问的一直是它。

容易搞混的地方

常见误解

端口被占了,换一个端口启动就好

正确理解

先查清是谁占着。换端口只是绕开了它:旧进程还在,其他指向原端口的配置也还在问它。

你可以这样告诉 AI

复制下面这段,贴给你的 AI

列出这个项目本地会启动哪些服务、各占哪个端口、谁把请求转给谁。如果端口被占用,先告诉我占着它的是哪个进程、什么时候从哪个目录启动的,不要直接换一个端口绕过去。

先知道

  • 本地环境——你自己电脑上跑起来的那一份网站,只有你能访问,和线上那份是两套各自运行的东西。

接着看

  • 进程——一个正在运行的程序。它把代码和数据读进内存后自己运行,和磁盘上的文件已经没有关系。

在这些课里出现

相关的真实事故