查看程序占用的端口号可以通过多种方法实现,具体取决于你使用的操作系统和工具。以下是一些常见的方法:
你可以使用 netstat
命令来查看当前所有活动的网络连接以及对应的端口号。
netstat -ano
-a
显示所有连接和监听端口。-n
以数字形式显示地址和端口号。-o
显示与每个连接关联的进程ID。找到你感兴趣的端口号后,可以使用任务管理器查看对应的进程。
PowerShell 提供了更强大的脚本功能,可以使用以下命令:
Get-NetTCPConnection | Where-Object { $_.LocalAddress -eq '0.0.0.0' } | Select-Object LocalPort, OwningProcess
netstat
在 Linux 上,netstat
命令同样适用:
sudo netstat -tulnp
-t
显示TCP连接。-u
显示UDP连接。-l
仅显示监听套接字。-n
以数字形式显示地址和端口号。-p
显示进程ID和程序名称。ss
ss
命令是 netstat
的替代品,通常更快更高效:
sudo ss -tulnp
lsof
lsof
(List Open Files)可以列出当前系统打开的文件和使用它们的进程:
sudo lsof -i :<端口号>
将 <端口号>
替换为你想要查询的具体端口号。
如果你正在编写Python程序,可以使用 socket
库来查看端口占用情况:
import socket
def find_port(ip, port):
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
result = s.connect_ex((ip, port))
if result == 0:
print(f"Port {port} is in use.")
else:
print(f"Port {port} is free.")
find_port('127.0.0.1', 8080)
在Node.js中,可以使用 net
模块来检查端口:
const net = require('net');
function checkPort(ip, port, callback) {
const server = net.createServer();
server.once('error', (err) => {
if (err.code === 'EADDRINUSE') {
callback(true); // Port is in use
}
});
server.once('listening', () => {
server.close();
callback(false); // Port is free
});
server.listen(port, ip);
}
checkPort('127.0.0.1', 8080, (inUse) => {
console.log(inUse ? 'Port is in use.' : 'Port is free.');
});
问题:端口被占用,无法启动服务。
原因:
解决方法:
kill
命令(Linux/macOS)中结束该进程。kill
命令(Linux/macOS)中结束该进程。通过这些方法,你可以有效地查看和管理程序占用的端口号。
领取专属 10元无门槛券
手把手带您无忧上云