You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何终止Python中由Socket创建的占用端口的进程?

解决UDP端口占用且无法终止的问题

步骤1:精准定位占用端口的进程

  • 以管理员身份打开CMD,替换[你的端口号]执行命令,找到对应进程ID(PID):
    netstat -ano -p udp | findstr :[你的端口号]
    
  • 执行命令查看进程名称,确认是否为系统进程或第三方程序:
    tasklist /fi "pid eq [PID]"
    

步骤2:强制终止进程

  • 尝试用CMD强制终止进程(包含子进程):
    taskkill /f /pid [PID] /t
    
  • 若CMD执行失败,切换到管理员权限的PowerShell执行:
    Stop-Process -Id [PID] -Force
    

步骤3:排查系统服务占用

  • 按下Win+R输入services.msc打开服务管理器,搜索步骤1中查到的进程名称,找到对应服务:
    • 先停止该服务,再将启动类型改为手动,避免自动重启占用端口。

步骤4:修改代码避免后续端口占用问题

在绑定端口前添加套接字选项,允许端口复用,即使端口处于等待状态也能重新绑定:

import socket

serverIP = input()
serverPort = int(input())

server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 添加端口复用选项
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)

try:
    server_socket.bind((serverIP, serverPort))
except OSError:
    print("Already in use")
    exit()

步骤5:极端情况修改注册表缩短端口释放时间

如果重启后端口仍被占用,可修改注册表调整UDP端口闲置超时:

  1. 按下Win+R输入regedit打开注册表编辑器
  2. 定位到路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  3. 右键空白处新建DWORD(32位)值,命名为UdpIdleTimeout,设置十进制值为30(单位:秒)
  4. 重启电脑生效

内容的提问来源于stack exchange,提问作者Erri000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 21:40:19