来自套接字的流量将作为传出带宽结算。App Engine 使用标准 PHP 库中的方法(例如
fsockopen
)支持出站套接字。对于受支持的选项,调用 socket_get_option
将返回一个模拟值,并且将自动忽略对 socket_set_option
的调用。对于不受支持的选项,仍将继续引发错误。受支持的选项有:
SO_KEEPALIVE
SO_DEBUG
TCP_NODELAY
SO_LINGER
SO_OOBINLINE
SO_SNDBUF
SO_RCVBUF
SO_REUSEADDR
局限和限制
App Engine 中的套接字支持存在以下限制:
- 您无法创建监听套接字,只能创建出站套接字。
- 不支持 FTP。
- 您只能使用 TCP 或 UDP;不能使用任意协议。
- 无法绑定到特定的 IP 地址或端口。
- 端口 25 (SMTP) 被屏蔽;您仍然可以在提交端口 587 上使用经过身份验证的 SMTP。
私有、广播、多播和 Google IP 范围(下面列出的范围除外)被屏蔽:
- Google 公共 DNS:
8.8.8.8
、8.8.4.4
、2001:4860:4860::8888
、2001:4860:4860::8844
端口 53 - Gmail SMTPS:
smtp.gmail.com
端口 465 和 587 - Gmail POP3S:
pop.gmail.com
端口 995 - Gmail IMAPS:
imap.gmail.com
端口 993
- Google 公共 DNS:
套接字描述符与创建描述符的 App Engine 应用相关联,并且不可转让(其他应用不能使用这些套接字描述符)。
套接字处于不活跃状态 10 分钟后,可能会被收回;任何套接字操作都会使套接字再持续存在 10 分钟。
在开发服务器上使用套接字
您可在开发服务器上使用套接字运行和测试代码,无需使用任何特殊的命令行参数。