Port(連接埠)
又稱:連接埠 · 端口 · port number · address already in use
接在位址後面的編號,讓同一台機器能同時跑很多個網路服務而不搞混。
你會在什麼時候遇到它
本地 AI 工具本質上都是網路服務:Ollama、LM Studio、各種開發面板,全都是「監聽在 localhost 的某個埠上」。瀏覽器網址 localhost:3000 裡冒號後面的 3000 就是埠。兩個程式搶同一個埠,你就會看到 Address already in use —— 不懂埠,你既不知道該找誰,也不知道換個號碼就能解決。
打個比方
IP 位址是大樓的門牌,埠是房間號。信封寫「這棟大樓 3000 房」,郵差才送得到對的房客。監聽 8000 埠的服務,等於把招牌掛在 8000 房,有人敲門就應門。
最小範例
python3 -m http.server 8000 # 在 8000 埠開一個測試用網頁伺服器(Ctrl+C 結束)
# 再開第二個終端機視窗、執行同一個指令,就會看到:
# OSError: [Errno 48] Address already in use ← 埠被占了
# 查出誰占著 8000(拿到 PID 就能 kill 掉):
lsof -i :8000 # macOS 內建;Linux 裝 lsof 或用 ss -ltnp
netstat -ano | findstr :8000 # Windows埠號的範圍是 0 到 65535;1024 以下保留給系統,佔用需要管理員權限。開發工具因此都擠在 3000、8000、8080、11434(Ollama 預設)這幾個大號碼上 —— 這也正是它們常互相撞車的原因:大家的預設值就那幾個。
最常搞錯的地方
- 看到 Address already in use 就重開電腦。先找佔用者更快:通常是上一次跑的工具沒退乾淨。lsof 會印出 PID,kill 就能結束它(見 process 詞條)。
- 把埠號當成服務的身分。localhost:3000 和 localhost:8080 可能是同一支工具的兩份實例,也可能是兩個不相干的程式。埠只是房號,不是身分證 —— 要看門後是誰,用 lsof 的 COMMAND 欄。