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

Windows下以太网连接时Python HTTPServer无法监听WiFi接口问题

问题根源

你的服务器已正确绑定到WiFi接口的IP(192.168.32.100),会正常接收发往该IP的请求。但以太网连接时,服务器响应数据包会优先使用Metric更低的以太网接口(路由表中以太网Metric为25,WiFi为40)作为源地址发送,导致WiFi网络内的客户端收到的响应包源IP并非请求的192.168.32.100,客户端会丢弃该包,表现为“请求无法处理”。

解决方案

方案1:添加静态路由(推荐,不影响全局路由)

为WiFi网段添加专属静态路由,强制服务器对192.168.32.0/24网段的响应走WiFi接口:

  1. 以管理员身份打开命令提示符
  2. 执行以下命令(if 18为WiFi接口编号,来自route print的Interface List):
    route add 192.168.32.0 mask 255.255.255.0 192.168.32.1 metric 20 if 18
    
  3. 若需永久生效(重启后保留),添加-p参数:
    route -p add 192.168.32.0 mask 255.255.255.0 192.168.32.1 metric 20 if 18
    

方案2:修改Python代码,强制socket使用WiFi接口发送

Windows系统下可通过IP_UNICAST_IF选项,让绑定的socket强制从指定IP(WiFi接口)发送响应:

import socket
from http.server import BaseHTTPRequestHandler, HTTPServer

addr = ('192.168.32.100', 3101)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# 强制socket使用WiFi接口IP发送数据
sock.setsockopt(socket.IPPROTO_IP, socket.IP_UNICAST_IF, socket.inet_aton('192.168.32.100'))
sock.bind(addr)
sock.listen()

后续多线程部分代码无需修改。

方案3:调整WiFi接口的Metric优先级(影响全局流量)

降低WiFi接口的Metric值,让其优先级高于以太网,但会导致所有对外流量优先走WiFi,若你需要以太网作为远程控制的优先路由,不建议使用:

  1. 打开「网络和共享中心」,点击WiFi连接的「属性」
  2. 选择「Internet 协议版本4 (TCP/IPv4)」→「属性」→「高级」
  3. 取消勾选「自动跃点」,手动设置「接口跃点数」为20,保存即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:45:03