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

Python搭建公网服务器报错WinError10049:本地IP可用公网IP不可用

解决WinError 10049:绑定公网IP失败的问题

WinError 10049的核心原因是:你试图绑定的公网IP不属于本地机器的网卡,公网IP是分配给路由器的,本地服务器程序只能绑定自身网卡上的地址(比如私有IP192.168.x.x,或者通配符0.0.0.0)。

解决方案

  • 将服务器绑定到0.0.0.0,这样程序会监听本地所有网卡的传入请求,包括路由器端口转发过来的公网流量
  • 保留你已配置的路由器端口转发、DMZ、防火墙规则,这些是公网访问本地服务器的必要条件

修改后的代码

import socket, requests

def get_public_ip():
    response = requests.get('https://api.ipify.org')
    if response.status_code == 200:
        return response.text
    else:
        return None

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定0.0.0.0,监听所有网卡的请求
server_address = ('0.0.0.0', 423)
server_socket.bind(server_address)
server_socket.listen(1)

# 打印公网IP方便外部客户端连接
public_ip = get_public_ip()
print(f"服务器启动成功,公网访问地址:{public_ip}:423" if public_ip else "无法获取公网IP,请手动确认")

connection, client_address = server_socket.accept()
print('已连接到 ', client_address)
while True:
    data = connection.recv(1024).decode()
    if not data:
        break
    print('收到消息:', data)
    message = input('发送内容: ')
    connection.sendall(message.encode())
connection.close()

额外说明

  • 外部客户端连接时,使用你的公网IP加上端口423即可
  • 确认本地防火墙允许该Python程序访问423端口,路由器端口转发规则需指向本地机器的私有IP(比如192.168.1.100)和423端口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 08:05:21