Traffic from sockets is billed as outgoing bandwidth. App Engine supports outbound sockets using methods from the standard PHP library such as
fsockopen
.
For supported options, calls to
socket_get_option
will return a mock value and calls to
socket_set_option
will be silently ignored. Errors will continue to be raised for unsupported options.
The supported options are:
SO_KEEPALIVE
SO_DEBUG
TCP_NODELAY
SO_LINGER
SO_OOBINLINE
SO_SNDBUF
SO_RCVBUF
SO_REUSEADDR
Limitations and restrictions
Socket support in App Engine has the following limitations:
- You cannot create a listen socket; you can only create outbound sockets.
- FTP is not supported.
- You can only use TCP or UDP; arbitrary protocols are not allowed.
- You cannot bind to specific IP addresses or ports.
- Port 25 (SMTP) is blocked; you can still use authenticated SMTP on the submission port 587.
Private, broadcast, multicast, and Google IP ranges are blocked, except those listed below:
- Google Public DNS:
8.8.8.8
,8.8.4.4
,2001:4860:4860::8888
,2001:4860:4860::8844
port 53 - Gmail SMTPS:
smtp.gmail.com
port 465 and 587 - Gmail POP3S:
pop.gmail.com
port 995 - Gmail IMAPS:
imap.gmail.com
port 993
- Google Public DNS:
Socket descriptors are associated with the App Engine app that created them and are non-transferable (cannot be used by other apps).
Sockets may be reclaimed after 10 minutes of inactivity; any socket operation keeps the socket alive for a further 10 minutes.
Using sockets with the development server
You can run and test code using sockets on the development server, without using any special command line parameters.