socket_bind():无法绑定地址 [99](Amazon EC2 上的 Ubuntu)
Posted
技术标签:
【中文标题】socket_bind():无法绑定地址 [99](Amazon EC2 上的 Ubuntu)【英文标题】:socket_bind(): unable to bind address [99] (Ubuntu on Amazon EC2) 【发布时间】:2012-05-30 00:12:30 【问题描述】:我正在尝试在 EC2 实例上使用套接字,但是当我尝试运行代码时出现以下错误:
php 警告:socket_bind():无法绑定地址 [99]:不能 在第 45 行的 sockets_test.php 中分配请求的地址
以下是部分相关代码:
$CFG = new stdClass();
$CFG->chat_serverip = 'MY_PUBLIC_EC2_IP';
$CFG->chat_serverport = '9111';
$listen_socket = socket_create(AF_INET, SOCK_STREAM, 0))
socket_bind($listen_socket, $CFG->chat_serverip, $CFG->chat_serverport)
如果我使用 127.0.0.1 或私有 IP,这很好用。 我的安全组有以下规则:
0-65535 0.0.0.0/0 (TCP)
0-65535 0.0.0.0/0 (UDP)
ALL 0.0.0.0/0 (ICMP)
【问题讨论】:
hmmm...如果我绑定到 0.0.0.0 它确实有效 它应该如何工作? ***.com/questions/7556811/… socket 绑定到你的 ip(某个接口的 ip)或 0.0.0.0(意思是任何)。这就是您定义套接字可访问的接口的方式。然后将 (socket_connect) 连接到一个 IP(例如 cloudflare dns 服务器的 1.1.1.1 IP)。 【参考方案1】:您不能绑定到外部 IP,您必须绑定到内部 IP,并设置一个规则以允许该端口,以便当他们连接到外部 IP 和端口时,它会被重定向到内部 IP。
【讨论】:
你能解释一下吗...我对此有点陌生。一点解释将不胜感激。【参考方案2】:phantomjs有问题,
我们需要绑定内部ip的我们可以在ifconfig看到, 不是我们无法看到的外部 IP。
【讨论】:
以上是关于socket_bind():无法绑定地址 [99](Amazon EC2 上的 Ubuntu)的主要内容,如果未能解决你的问题,请参考以下文章
PHP socket_bind 错误(socket地址只有一种用法)
socket_bind() : 每个套接字地址(协议/网络地址/端口)通常只允许在 php 中使用一次
socket.error:[errno 99] 无法在 python 中分配请求的地址和命名空间