适用于旧版捆绑服务的 Sockets API


来自套接字的流量将作为传出带宽结算。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.88.8.4.42001:4860:4860::88882001:4860:4860::8844 端口 53
    • Gmail SMTPS:smtp.gmail.com 端口 465 和 587
    • Gmail POP3S:pop.gmail.com 端口 995
    • Gmail IMAPS:imap.gmail.com 端口 993
  • 套接字描述符与创建描述符的 App Engine 应用相关联,并且不可转让(其他应用不能使用这些套接字描述符)。

  • 套接字处于不活跃状态 10 分钟后,可能会被收回;任何套接字操作都会使套接字再持续存在 10 分钟。

    在开发服务器上使用套接字

    您可在开发服务器上使用套接字运行和测试代码,无需使用任何特殊的命令行参数。