System check identified no issues (0 silenced).Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试解决办法

遇到 WinError 10013(访问权限不允许的套接字访问)时,通常是因为程序尝试绑定到受限制的端口(如 80、443 等)或系统权限不足。以下是分步解决方案:

1. 检查端口占用情况

目标:确认端口是否被其他进程占用。

# 在 PowerShell 或 CMD 中运行:
netstat -ano | findstr :<端口号>
# 例如检查 80 端口:
netstat -ano | findstr :80
  • 如果发现占用端口的 PID(进程ID),用任务管理器结束该进程。

  • 若需长期释放端口,可更换程序监听的端口(如改用 8080)。

2. 以管理员身份运行程序

原因:Windows 要求绑定 1024 以下端口需管理员权限。

  • 右键点击程序/脚本 → 选择 以管理员身份运行

  • 如果是服务,需在服务管理器中设置 启动账户为管理员

3. 修改端口权限(针对保留端口)

适用场景:必须使用 80、443 等保留端口。

# 以管理员身份运行 CMD/PowerShell:
netsh http add urlacl url=http://*:<端口号>/ user=Everyone
# 例如开放 80 端口:
netsh http add urlacl url=http://*:80/ user=Everyone

4. 检查防火墙/杀毒软件

操作

  • 临时禁用防火墙或杀毒软件,测试是否解决问题。

  • 若有效,需在防火墙中添加入站/出站规则允许程序通信。

5. 检查用户账户控制(UAC)设置

操作

  • 按 Win + R 输入 msconfig → 进入 工具 → 禁用 更改 UAC 设置,重启后尝试。

  • 或直接在控制面板中将 UAC 级别调低(不推荐长期使用)。

6. 检查程序代码(开发者适用)

代码层面

  • 确保程序未尝试绑定已关闭的套接字。

  • 使用 try-except 捕获异常,并添加端口释放逻辑:

    import socket
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 允许地址复用
    s.bind(('0.0.0.0', 80))

7. 重启系统

原因:某些端口可能被系统进程短暂占用,重启后可能释放。

总结步骤

  1. 优先以管理员身份运行程序。
  2. 若无效,检查端口占用并终止冲突进程。
  3. 必须使用保留端口时,通过 netsh 修改权限。
  4. 最后排查防火墙/安全软件限制。

执行以上步骤后,问题通常可解决。若仍报错,请提供具体场景(如程序类型、端口号)以便进一步分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值