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

UDP绑定AWS EC2实例IP时提示[Errno 99] Cannot assign requested address错误

错误根因

[Errno 99] Cannot assign requested address报错的核心原因是:AWS EC2 实例的公网IP并未直接配置在实例的本地网卡上,而是通过AWS基础设施层的NAT映射对外暴露的,本地程序无法直接绑定不属于本地网卡的公网IP地址。

你之前将bind替换为connect无法接收消息的原因是:connect仅用于指定UDP协议发送数据的默认目标地址,不会监听本地端口接收外部请求,自然收不到消息。


解决方案

1. 修改绑定IP地址

你可以选择以下任意一种方式修改绑定逻辑:

  • 通用方案:直接绑定0.0.0.0,监听实例所有网卡的入站请求,适配绝大多数场景
  • 定向绑定:执行ip addr(Linux实例)或ipconfig(Windows实例)查询本地网卡实际配置的私有IP,绑定该私有IP即可

修改后的示例代码如下:

import socket

UDP_IP = "0.0.0.0" # 也可以替换为实例本地私有IP
UDP_PORT = YYY # 替换为你实际使用的UDP端口号

sock = socket.socket(socket.AF_INET,  # Internet
                     socket.SOCK_DGRAM)  # UDP

sock.bind((UDP_IP, UDP_PORT))

while True:
    data, address = sock.recvfrom(4096)
    print("received message:", data)

2. 检查端口放行规则

  • 确认EC2实例关联的安全组入站规则,已经放开对应UDP端口的访问权限,测试阶段可临时将源IP设置为0.0.0.0/0验证连通性
  • 确认实例操作系统内部的防火墙(如ufw、firewalld、Windows防火墙)也同步放开对应UDP端口的入站权限

配置完成后,外部服务向EC2的公网IP+对应UDP端口发送的数据即可被程序正常接收。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:36:03