【发布时间】: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 它确实有效 它应该如何工作? stackoverflow.com/questions/7556811/…
-
socket 绑定到你的 ip(某个接口的 ip)或 0.0.0.0(意思是任何)。这就是您定义套接字可访问的接口的方式。然后将 (socket_connect) 连接到一个 IP(例如 cloudflare dns 服务器的 1.1.1.1 IP)。
标签: php sockets amazon-ec2